一、前言
考虑安全性,项目部署的时候,配置文件中的数据库账户密码不能为明文,所以考虑加密方式
1、Jasypt加密
2、alibaba.druid 加密
这里使用的是jasypt,druid 见文章《集成druid实现数据库密码加密功能》 话不多说,开始配置
二、配置
- maven引用
Jasypt引用的maven配置: 这里我用的是jasypt1.9.2的版本, 你们可以考虑更高版本配置的
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!-- Application.java上增加注解@EnableEncryptableProperties(上面的jasypt-spring-boot-starter包不需要该配置); -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt</artifactId>
<version>1.9.2</version>
</dependency>
另外jasypt 1.9.2 最好搭配的springboot版本是2.3.3以上
- 加密字符生成
找到maven本地仓库中的jasypt -1.9.2.jar 的目录,并打开cmd环境,执行以下命令:
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="123456" password=sb01 algorithm=PBEWithMD5AndDES
命令解析:
input的值就是原密码。
password的值就是参数jasypt.encryptor.password指定的值,即秘钥。这个随你自己定
algorithm 是加密方式,固定值
切记,命令前后不要有空格!,不然会报:java.security.NoSuchAlgorithmException: PBEWithMD5AndDES? SecretKeyFactory not available
正确执行结果如下:

3、使用
增加配置属性jasypt.encryptor.password = XXX,这是加密的秘钥,这里我定的是sb01;
所有明文密码替换为ENC(加密字符串),例如ENC(w+OxT6QlB18LAo9pR2t6zA==);
完成如上配置即可!
使用jasypt-spring-boot对应的jasypt依赖, Application.java上增加注解@EnableEncryptableProperties
使用上面jasypt-spring-boot-starter对应的jasypt依赖, Application.java不需要该配置);