我有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!
答案 0 :(得分:0)
我在Spring Boot 2.1.3上遇到了同样的问题。但是后来我发现那只是我的愚蠢案例。我只是理解“输入”和“密码”参数含义之间的错误。当我在命令提示符下加密时,我认为“输入”表示密钥,然后在运行应用程序时在其中两个之间交换值。
所以,请记住:
input = [您的真实密码]
password = [是jasypt键]
如果这不是您的根本原因,则要考虑的另一件事是,在Windows上加密密码时,它可能无法在Linux上使用。当需要在Linux上运行应用程序时,可能必须在Linux上进行加密。