通常状况下,Spring项目中数据库等配置文件都写在配置文件中,因此存在必定的风险,可选的作法有:①重写Spring读取配置文件的机制;②在Java代码中配置DataSource;这两种方法均可以实现,第一种方法比较复杂可是更通用,第二种较为简单,可是将配置写死在程序中显然是不恰当的。因此使用一个开源的专门针对Spring配置文件加密的工具jasypt,其原理是重写读取配置文件的机制,在读取到具备加密标识的前缀和后缀时进行解密,具体步骤以下:git
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency>
jasypt: encryptor: password: 123456 #加密/解密密钥
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("密文")); }
格式以下:
ENC(密文)
例如:github
spring: datasource: username: abc password: ENC(as/qrKIOWhfvweioclz)
自定义前缀/后缀:spring
jasypt: encryptor: property: prefix: "" suffix: ""
jasypt地址:https://github.com/ulisesbocchio/jasypt-spring-boot数据库