无法使用带有 spring 启动的 jasypt 解密错误
Unable to decrypt error using jasypt with spring boot
我正在使用 spring boot:2.2.2.RELEASE 当我尝试添加 jasypt 功能来隐藏我的密码时,出现以下错误
Unable to decrypt: ENC(MyEncryptedPass). Decryption of Properties failed, make sure encryption/decryption passwords match
我使用命令行对密码进行加密和解密,它工作正常,所以我确信我的加密和解密密码是准确的,但是当我尝试启动我的 spring 应用程序时出现此错误。所以任何帮助(•–•)
我也遇到了同样的问题。最初,我使用 jasypt CLI 进行加密并将相同的值放入 属性 文件中。但默认情况下 属性 of com.github.ulisesbocchio jar 与 CLI 不同。尝试使用下面的代码进行加密。
private static StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(password);
config.setAlgorithm("PBEWithMD5AndDES");
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
return encryptor;
}
private static String encrypt(String text) {
StringEncryptor textEncryptor = stringEncryptor();
String encryptedText = textEncryptor.encrypt(text);
return encryptedText;
}
private static String decrypt(String text) {
StringEncryptor textEncryptor = stringEncryptor();
String decryptedText = textEncryptor.decrypt(text);
return decryptedText;
}
public static void main(String[] args) {
System.out.println(encrypt("Whosebug"));
}
好的解决方案是将此配置添加到我的 project.properties 文件
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
因为我可能正在使用不需要初始化向量的算法 = PBEWithMD5AndDES。但当然这只是我的解释,没有任何意义:''D。
从 jasypt-spring-boot 版本 3.0.0
开始,默认的 encryption/decryption 算法已更改为 PBEWITHHMACSHA512ANDAES_256
可以在此处找到更改:https://github.com/ulisesbocchio/jasypt-spring-boot#update-11242019-version-300-release-includes
要解密以前加密的值,请在您的属性中添加这两个值:
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
我正在使用 spring boot:2.2.2.RELEASE 当我尝试添加 jasypt 功能来隐藏我的密码时,出现以下错误
Unable to decrypt: ENC(MyEncryptedPass). Decryption of Properties failed, make sure encryption/decryption passwords match
我使用命令行对密码进行加密和解密,它工作正常,所以我确信我的加密和解密密码是准确的,但是当我尝试启动我的 spring 应用程序时出现此错误。所以任何帮助(•–•)
我也遇到了同样的问题。最初,我使用 jasypt CLI 进行加密并将相同的值放入 属性 文件中。但默认情况下 属性 of com.github.ulisesbocchio jar 与 CLI 不同。尝试使用下面的代码进行加密。
private static StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(password);
config.setAlgorithm("PBEWithMD5AndDES");
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
return encryptor;
}
private static String encrypt(String text) {
StringEncryptor textEncryptor = stringEncryptor();
String encryptedText = textEncryptor.encrypt(text);
return encryptedText;
}
private static String decrypt(String text) {
StringEncryptor textEncryptor = stringEncryptor();
String decryptedText = textEncryptor.decrypt(text);
return decryptedText;
}
public static void main(String[] args) {
System.out.println(encrypt("Whosebug"));
}
好的解决方案是将此配置添加到我的 project.properties 文件
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
因为我可能正在使用不需要初始化向量的算法 = PBEWithMD5AndDES。但当然这只是我的解释,没有任何意义:''D。
从 jasypt-spring-boot 版本 3.0.0
开始,默认的 encryption/decryption 算法已更改为 PBEWITHHMACSHA512ANDAES_256
可以在此处找到更改:https://github.com/ulisesbocchio/jasypt-spring-boot#update-11242019-version-300-release-includes
要解密以前加密的值,请在您的属性中添加这两个值:
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator