使用jasypt-spring-boot-starter组件实现配置文件的加密,github地址:https://github.com/ulisesbocchio/jasypt-spring-boot
一、引入依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>3.0.4</version>
</dependency>
二、添加配置信息
使用ENC()将加密后的内容包裹起来,ENC()为默认格式,可以通过配置文件自定义配置。
datasource:
url: ${SPRING_DATASOURCE_URL:jdbc:mysql://192.168.16.205:3306/hscs_hsdi?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true}
username: ${SPRING_DATASOURCE_USERNAME:ENC(oWle0nC9ozabd6H/m+4GhA==)}
password: ${SPRING_DATASOURCE_PASSWORD:ENC(b6tPJt+jNB2i0Q5RfSwdUqPKGMRalbv+)}
jasypt-spring-boot-starter 组件使用的是PBE加密算法,PBE算法(Password Based Encryption,基于口令加密)是一种基于口令的加密算法,其特点是使用口令代替了密钥,所以口令不可配置在配置文件中,可以在项目启动的时候作为参数传进去。
jasypt:
encryptor:
#jasypt加密口令
password: hscs
#加密算法
algorithm: PBEWITHHMACSHA512ANDAES_256
#前缀和后缀
property:
prefix: "ENC("
suffix: ")"
本地启动项目后获取加密后字符串,获取后配置到需要加密的地方。
@Autowired
StringEncryptor encryptor;
@Override
public Map<String,String> encryptorMsg(Map<String,String> messagesMap) {
Map<String,String> resultMap = new HashMap<>();
//加密
messagesMap.forEach((k,v)->{
String encryptedStr = encryptor.encrypt(v);
resultMap.put("encode_"+k,encryptedStr);
});
return resultMap;
}
{
"encode_password": "v7dZGtAkky3QiZCGYBzuN6bdF8r9xg9Z7scd7xH6KMcjgsnQLnnsH7KjTaMGvkqv",
"encode_name": "8HOd7Gzj1XJHcp5HLU/YzM1PUTfqMv4KJjTCFvGXnnmfFTCrhmi+V7p2z/xbwE6V"
}
版权声明:本文为weixin_42708896原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。