无法使用带有 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