jasypt-spring-boot-1.17:属性解密失败,请确保加密/解密密码匹配

时间:2018-10-03 20:27:02

标签: spring passwords jasypt

我有jasypt-spring-boot-1.17,其春季版本为“ 4.2.5.RELEASE”,而春季启动版本为“ 1.5.3.RELEASE”。

由于我在application.java类中使用@SpringBootApplication,因此我正在使用本网站(https://github.com/ulisesbocchio/jasypt-spring-boot)中的第一种方法。

我做了第一次测试。 1.我在ApplicationMain.java中使用了这种表示法@PropertySource(“ classpath:sampleservices.yml”)或@PropertySource(“ classpath:sampleservices.properties”)。 2.我将ENC()密码保存在一个单独的文件中,即sampleservices.yml或sampleservices.properties。 3.我在application.yml文件中定义了以下代码。我在环境变量中为JASYPT_ENCRYPTOR_PASSWORD设置了普通密码值。测试成功。 jasypt:     加密器:         bean:encryptorBean         密码:$ {JASYPT_ENCRYPTOR_PASSWORD:}

但是,真正的加密ENC()密码以以下嵌套方式存储在我的application.yml文件中。请让我知道为使解密过程成功进行,我应该确切执行什么操作。我需要使用此解密密码登录数据库。

我确实更改了此代码@PropertySource(“ application.yml”),但我不知道如何在此处访问密码字段。

从application.yml文件: 弹簧:   配置文件:样本   数据源:     驱动程序类名称:com.mysql.jdbc.Driver     网址:jdbc:mysql:abc     用户名:userid     密码:ENC(xxxxxxxx)

I kept getting this error.

com.ulisesbocchio.jasyptspringboot.exception.DecryptionException: Decryption of Properties failed,  make sure encryption/decryption passwords match
at com.ulisesbocchio.jasyptspringboot.resolver.DefaultPropertyResolver.resolvePropertyValue(DefaultPropertyResolver.java:37) ~[jasypt-spring-boot-1.17.jar!/:?]

Thanks a lot!

1 个答案:

答案 0 :(得分:0)

我在Spring Boot 2.1.3上遇到了同样的问题。但是后来我发现那只是我的愚蠢案例。我只是理解“输入”和“密码”参数含义之间的错误。当我在命令提示符下加密时,我认为“输入”表示密钥,然后在运行应用程序时在其中两个之间交换值。

所以,请记住:

  

input = [您的真实密码]

     

password = [是jasypt键]

如果这不是您的根本原因,则要考虑的另一件事是,在Windows上加密密码时,它可能无法在Linux上使用。当需要在Linux上运行应用程序时,可能必须在Linux上进行加密。