参考资料: http://www.jasypt.org/
从官网的开发介绍文档中, 可以看出它的功能很多很强大. 这里简单使用它来加密配置文件中的一些隐私内容. 比如数据库的账号密码, 第三方的ak信息等等, 防止外部人员看到配置文件明文密码信息泄露.
操作如下:
-
添加依赖
-
在配置文件设置加密方式
-
获取加密后的字符串
-
替换
1. 依赖
<!--配置文件加密-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.18</version>
</dependency>
2. springboot的yml文件中配置密钥
jasypt:
encryptor:
password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ7
3. 获取加密后字符串
@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class ApplicationTests {
@Autowired
private StringEncryptor encryptor;
@Test
public void getPass() {
String username = encryptor.encrypt("root");
String password = encryptor.encrypt("123456");
String akId = encryptor.encrypt("xxx");
String akPwd = encryptor.encrypt("xxx");
System.out.println("-------");
System.out.println();
System.out.println("数据库用户名:"+username);
System.out.println("数据库密码:"+password);
System.out.println("短信ak Id:"+akId);
System.out.println("短信ak 密码:"+akPwd);
System.out.println();
}
}
输出得到加密后字符串:
数据库用户名:aoV7QvuF4WQAmJ3XAA==
数据库密码:NmRCf/V7o6H6SUbvopg==
短信ak Id:FEzYN6iSU2FSSU1d28=
短信ak 密码:2QUiD0KxC2XhUTFp==
4. 替换原字段信息
将yml配置文件中原信息修改为上面输出的部分. 但要注意, 要用ENC()将加密后的括起来.
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: ENC(EaVkdnzUbWaE8E9oaUUFl1a6Z+PIsdF
username: ENC(aoV7QvuF4WQAmJ3XAA==)
password: ENC(NmRCf/V7o6H6SUbvopg==)
5. 启动项目
可以看到启动的日志中的加密信息
若正常启动, 说明加密成功.