加密说明:
资源文件中的内容通常情况下是明文显示,安全性就比较低一些。打开application.properties或application.yml,比如mysql登陆密码,redis登陆密码以及第三方的密钥等等一览无余,这里介绍一个加解密组件,提高一些属性配置的安全性。
jasypt由一个国外大神写的一个springboot下的工具包。Git地址:https://github.com/ulisesbocchio/jasypt-spring-boot
注意事项:
springboot2.x以下的版本,只能用jasypt1.x的版本。如果用jasypt2.x的版本,启动会报错,详见https://github.com/ulisesbocchio/jasypt-spring-boot/issues/97
集成使用:
pom
<jasypt-spring-boot.version>2.1.0</jasypt-spring-boot.version>
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>${jasypt-spring-boot.version}</version>
</dependency>
application.properties
#数据加密私钥
jasypt.encryptor.password=lulj
数据库加密示例:
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.183.206/alarmV2.2?useUnicode=true&characterEncoding=UTF-8
#可用ENC(加密的密文)也可以直接使用明文账号密码
spring.datasource.username=ENC(iUmZ4z687RL++Pxy9tNxlA====)
spring.datasource.password=ENC(iUmZ4z687RL++Pxy9tNxlA====)
#spring.datasource.username=root
#spring.datasource.password=root
测试类
@RestController
@Slf4j
public class HelloController {
@Autowired
private StringEncryptor encryptor;
@RequestMapping("/hi")
public Result hello(HttpServletRequest request) {
log.info("info : hello,The address you requested is:" + request.getRequestURL());
return Result.success();
}
/**
* 测试jasypt加密解密
*/
@GetMapping("/jasypt")
public void testJasypt() {
String password = "123456";
String encryptPwd = encryptor.encrypt(password);
System.out.println("加密::" + encryptPwd);
System.out.println("解密:" + encryptor.decrypt(encryptPwd));
}
}