#如何处理SpringBoot Application.yml文件中账号密码信息进行加密处理
1、 引入jasypt:在项目的pom.xml中引入jasypt
<!--配置文件账号密码信息脱敏-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
2、新建一个test类,主要对于需要加密的信息进行加密
public class EncryptTest {
@Test
public void encrypt() {
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
/** jasypt自身所需要设置的密钥 **/
textEncryptor.setPassword("EbfYkitulv73I2p0mXI50JMXoaxZTKJ0");
/** 假设设置的账号信息**/
String appId = textEncryptor.encrypt("4567894");
String apiKey = textEncryptor.encrypt("6XNGWibUMTYTa8SgdTL5C");
String secretKey = textEncryptor.encrypt("9NtPd6KGRAIMDAPfNEz3iM2VF4VOco2p");
System.out.println(appId + "----------------");
System.out.println(apiKey + "----------------");
System.out.println(secretKey + "----------------");
}
}
3、将步骤2的生成的加密后的账号密码配置到application.yml中;
(1):格式为ENC(),括号中输入步骤2中生成的加密的密钥
baidu:
#申请的应用ID
appId: ENC(0AMroWvwSGgxIjOsyiSRMtZHIasH7jqY)
apiKey: ENC(0AMroWvwSGgxIjOsyiSRMtZHIasH7jqY)
secretKey: ENC(eSaRzjquRNFzU/0MeXtnt5+JRIkGcgZ3)
#jasypt密钥的配置
jasypt:
encryptor:
password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ0
最后就可以启动项目。
上面的配置存在的问题:
由于jasypt的密钥明文依然还是直接放在了application.yml中;所以如果获取到这个密钥依然可以破解获取到账户密码;因此最好的配置方式是将密钥放在启动项中。