引入jasypt
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.18</version>
</dependency>
application.properties文件中配置
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.password=myKey
*** 注意上面的这个password在低环境里可以直接配置在配置文件application.yml里,如果是高环境,必须配置在其他更安全的地方,然后在程序运行的时候获取这个password,或者也叫key;
本质上加密这些密码是为了防止在远程传输过程中,明文密码被劫持,所以低环境里说的加密所针对的对象是那些网络黑客,而不是程序员自己;而在高环境,比如production的加密即是防黑客,也防程序员,因为毕竟production数据属于非常敏感和机密数据,只有极少数人有权限
生成要加密的字符串,将数据库的用户名和密码进行加密
public static void main(String[] args) {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
//加密所需的salt(盐)
textEncryptor.setPassword("myKey");
//要加密的数据(数据库的用户名或密码)
String password = textEncryptor.encrypt("123456");
System.out.println("password:"+password);
}
输出信息为
password:RZh3XkvB2xpcpDNvifu2Sg==
配置数据源配置
spring.datasource.password=ENC(RZh3XkvB2xpcpDNvifu2Sg==)