使用jasypt对Spring配置文件进行加密
一般情况下,Spring项目中数据库等配置文件都写在配置文件中,所以存在一定的风险,可选的做法有:①重写Spring读取配置文件的机制;②在Java代码中配置DataSource;这两种方法都可以实现,第一种方法比较复杂但是更通用,第二种较为简单,但是将配置写死在程序中显然是不恰当的。所以使用一个开源的专门针对Spring配置文件加密的工具jasypt,其原理是重写读取配置文件的机制,在读取到具有加密标识的前缀和后缀时进行解密,具体步骤如下:
1.添加依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
2.配置文件application.yml中新增配置
jasypt:
encryptor:
password: 123456 #加密/解密密钥
3.加密
public static void main(String[] args) {
BasicTextEncryptor encryptor = new BasicTextEncryptor();
//需和配置文件中jasypt.encryptor.password的值相同
encryptor.setPassword("123456");
//加密得到密文
System.out.println(encryptor.encrypt("明文"));
//解密
System.out.println(encryptor.decrypt("密文"));
}
4.将配置文件中的明文替换为上一步得到的密文
格式如下:
ENC(密文)
例如:
spring:
datasource:
username: abc
password: ENC(as/qrKIOWhfvweioclz)
5.其他配置
自定义前缀/后缀:
jasypt:
encryptor:
property:
prefix: ""
suffix: ""
jasypt地址:https://github.com/ulisesbocchio/jasypt-spring-boot
网络上志同道合,我们一起学习网络安全,一起进步,QQ群:694839022