- 不同版本的jasypt默认的ivGenerator和randomGenerator可能不同,这会导致不同版本间解密失败。
- 密钥与密文分离:可采用启动脚本传入
脚本:export PASSWORD="PSWD"
配置文件:password: ${PASSWORD}
idea中启动配置环境变量 PASSWORD=PSWD
或是启动jar包时手动传入
java -Djasypt.encrypt.password=加密密码 -jar xxx.jar
- 启动配置加解密:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
springBoot项目中一切正常,但是在springCloud项目中会出现application及application-profile文件无法加载
当jasypt和springcloud一起使用时,bootstrap的配置会失效。
追踪代码发现,spring在启动bootstrap容器后,当把bootstrap容器的environment合并到子容器时,只同步了OriginTrackedMapPropertySource类型 BootstrapApplicationListener,
此时所有的PropertySource都已经被包装为EncryptablePropertySourceWrapper,所以会导致bootstrap的配置不会合并到子容器。
https://blog.csdn.net/cnamam/article/details/125960603
解决方法1是在boostrap.yml中设置 jasypt.encryptor.bootstrap属性为false,但是项目接入nacos,nacos配置必须在bootstrap文件中,所以pass;
解决方法2是更换依赖为
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>2.0.0</version>
</dependency>
并且在启动类上添加注解**@EnableEncryptableProperties**,然后没有开启nacos鉴权或没有加密nacos-config用户名密码的项目就可以正常启动了
开启了nacos鉴权的springCloud项目如何解密nacos账号密码我另开一篇单独说
https://segmentfault.com/a/1190000039899146?utm_source=sf-similar-article