SpringBoot 使用jasypt 对敏感字段加密
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>${jasypt.version}</version>
</dependency>
如果Spring Boot项目中使用了@SpringBootApplication或者@EnableAutoConfiguration,在项目里添加jasypt-spring-boot-starter依赖会自动对项目中整个属性(包括系统属性,环境属性, 命令行参数, application.properties, yaml)启动加密。
一.测试生成密文
敏感信息明文存储会带有一定的安全隐患,加密秘钥的使用尽量还是放到内部代码里或者进行外部传入使用,而不是直接配置到配置文件里定义
1.通过代码生成
public static void main(String[] args) { BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); //加密所需的salt(盐)PBEWithMD5AndDES textEncryptor.setPassword( "test" ); //要加密的数据(数据库的用户名或密码) String username = textEncryptor.encrypt( "root" ); System.out.println( "username:" + username); System.out.println( "username:" + textEncryptor.decrypt(username)); }
2.cmd窗口打开命令窗口,输入命令:
java -cp **\jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=allanpassword algorithm=PBEWithMD5AndDES
java –cp jar包所在路径\jar包 org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=”数据库密码” password=密钥 algorithm=默认PBEWithMD5AndDES加密
参数说明:
input =需要加密的字段值
password=密钥,随意设置(配置文件中需要添加此密码,相当于约定密码)
algorithm= 算法,默认PBEWithMD5AndDES
二.解密
1.在服务器上启动
方式1、把秘钥当做程序启动时环境变量(推荐),示例如下:
java -Djasypt.encryptor.password=秘钥 -jar xxx.jar
方式2、把秘钥当做程序启动时的命令行参数(推荐),示例如下:
java -jar xxx.jar --jasypt.encryptor.password=秘钥
使用idea在本地启动
2.在IDEA中测试的时候需要在运行配置加上
-Djasypt.encryptor.password=xxxx
三.配置实现
将生成的加密内容配置在之前的值的位置,外面加上ENC(加密后的值)
四.可能遇到的问题
版本不兼容
参考:https://goshare.site/article/29863
https://blog.csdn.net/weixin_49076592/article/details/119797675?spm=1001.2014.3001.5502