I am using Jasypt for encryption. This is my code:
public class Encryptor {
private final static StandardPBEStringEncryptor pbeEncryptor = new StandardPBEStringEncryptor();
private final static String PASSWORD = "FBL";
private final static String ALGORITHM = "PBEWithMD5AndTripleDES";
static{
pbeEncryptor.setPassword( PASSWORD );
//pbeEncryptor.setAlgorithm( ALGORITHM );
}
public static String getEncryptedValue( String text ){
return pbeEncryptor.encrypt( text );
}
public static String getDecryptedValue( String text ){
return pbeEncryptor.decrypt( text );
}
}
Uncomment the setAlgorithm line and it will throw an exception
org.jasypt.exceptions.EncryptionOperationNotPossibleException:
Encryption raised an excep tion. A
possible cause is you are using strong
encryption algorithms and you have not
installed the Java Cryptography Ex
tension (JCE) Unlimited Strength
Jurisdiction Policy Files in this Java
Virtual Machine
api says:
Sets the algorithm to be used for
encryption Sets the algorithm to be
used for encryption, like
PBEWithMD5AndDES.This algorithm has to be supported by
your JCE provider (if you specify one,
or the default JVM provider if you
don’t) and, if it is supported, you
can also specify mode and padding for
it, like ALGORITHM/MODE/PADDING.
Now, when you comment ‘setAlgorithm’ it will use the default Algorithm [ i guess it is md5 ], and it will work fine. That means md5 is supported by my JVM. Now, how to find out what other encryption algorithms are supported by my JVM.
Thanks,
The following will list all the providers and the algorithms supporter. What version of Java are you using? Unless you’re on an old version JCE should be included as standard.
Edit:
Any reason why you don’t use the standard stuff from the javax.crypto package?
1) Generate a
Keyusing2) Create a
Cipherusing3) Init your cipher with the key
4) Do the encrypting with