我正在使用Jasypt进行加密。这是我的代码:
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 );
}
}
取消注释setAlgorithm
这一行会抛出异常:
org.jasypt.exceptions.EncryptionOperationNotPossibleException: 加密发生了异常。可能的原因是您正在使用强加密算法,但在此Java虚拟机中尚未安装Java密码扩展(JCE)无限制强度的治理策略文件。
API文档说:
设置用于加密的算法,比如PBEWithMD5AndDES。
这个算法必须被您的JCE提供者支持(如果您指定了一个,或者默认的JVM提供者如果您没有指定),如果它被支持,您也可以为它指定模式和填充,比如ALGORITHM/MODE/PADDING。
现在,当您注释掉“setAlgorithm”时,它将使用默认的算法[我猜它是md5],并且它将正常工作。这意味着md5由我的JVM支持。现在,如何找出我的JVM支持哪些其他加密算法。
谢谢!