目录
录下来,以防后自己忘记
第一步:添加依赖
在pom文件中增加druid的引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.13</version>
</dependency>
第二步:新增加密类
新增一个加密密码生成类:
import com.alibaba.druid.filter.config.ConfigTools;
import java.util.logging.Level;
import java.util.logging.Logger;
public class PasswordGenerator {
private static final Logger log = Logger.getLogger(PasswordGenerator.class.getName());
public static void main(String[] args) throws Exception {
String password = "material";
log.log(Level.INFO, "明文密码:{0}", password);
String privateKey = "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvcCX4bgbJYPtV3VVB3DEF7taKikTor7FbPRv+t0KLDPUQq66DFg5jI8xtZqg/tibrQRT2Z7NlzCZ1lCraIkD+wIDAQABAkArlKxNf0dc2mwMhjo9Nz0SZklTHZQQ8NfPKmT9rP7FH8w87+AJCAiVxmLONtz9RDPZHJd6Rs9Hw/Ta1leSeG/BAiEA+atoPpSgKc9JQkHFUXpwf3hU2JpmUxW/b1Vk387CwCkCIQDCkEQnGBEEsAZREQYrmEBcePsfJwfgx7sa4ISenlUXgwIhAIhXd4T9Sv2qChqZqjSVhYvG3aavooNq0/DrlDu4QJgJAiEAu4cPmVqx9IGw5OvytYwe5MJa0PDuv/Hi3onuaXAUdf8CIFG0RKBVCMGL6cHaxU0kL9Uzbzfcrzxj+4+OpDW4vrw1";
String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL3Al+G4GyWD7Vd1VQdwxBe7WiopE6K+xWz0b/rdCiwz1EKuugxYOYyPMbWaoP7Ym60EU9mezZcwmdZQq2iJA/sCAwEAAQ==";
password = ConfigTools.encrypt(privateKey, password);
log.log(Level.INFO, "privateKey私钥:{0}", privateKey);
log.log(Level.INFO, "publicKey公钥:{0}", publicKey);
log.log(Level.INFO, "密文密码:{0}", password);
String passwordStr = ConfigTools.decrypt(publicKey, password);
log.log(Level.INFO, "解密后密码:{0}", passwordStr);
}
}
直接修改password字符串的值,然后运行即可产生加密的密码
此处如果需要自己生成公钥私钥,则使用代码:
String[] keyPair = ConfigTools.genKeyPair(2048);
//私钥
String privateKey = keyPair[0];
//公钥
String publicKey = keyPair[1];
然后打印到控制台
第三步:配置application
配置application.yml文件
增加配置项 publicKey:
custom:
publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL3Al+G4GyWD7Vd1VQdwxBe7WiopE6K+xWz0b/rdCiwz1EKuugxYOYyPMbWaoP7Ym60EU9mezZcwmdZQq2iJA/sCAwEAAQ==
publicKey为生成类中的publicKey
在spring.datasource.druid配置下增加配置:
filter:
config:
enabled: true #数据库过滤器是否开启
connect-properties:
druid.statmergeSql: true #打开mergeSql功能
druid.stat.slowSqlMillis: 5000 #慢SQL记录
config.decrypt: true #是否解密
config.decrypt.key: ${custom.publicKey} #解密的公钥
然后就可以将第二步生成的数据库加密后的密码配置到原明文密码的地方了,个人觉得比jasypt简单方便,而且此方式是非对称的。