Druid 内置的密码加密工具 ConfigTools,可以对明文密码进行加密处理。
在已经配置好 Druid 的项目中新建一个 Test 类:
/**
* Druid 密码加密
*/
@Test
@SneakyThrows
void testEncodePassword() {
// 你的密码
String password = "123456";
String[] arr = ConfigTools.genKeyPair(512);
// 私钥
log.info("privateKey: {}", arr[0]);
// 公钥
log.info("publicKey: {}", arr[1]);
// 通过私钥加密密码
String encodePassword = ConfigTools.encrypt(arr[0], password);
log.info("password: {}", encodePassword);
}
得到密码:
privateKey: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAhJmRD+8i/3C1I46ZhqxQX2OMnlvuTklr3btAFNMSRwPUVp8iONlvtCpvHTgGB4dBLrEi8LI13kHPK+Uww2l8AwIDAQABAkA1GmMT5Is5jWOdl9A4NO4DJZT9HofzZkgChqkFLfqV4YRjcTY2FNbnX2Ip/P5a79Pi4K8hoVYR7LerU2DOyMyhAiEA7WXoDzxzVdm1kZ4qaA5ps7MfUe4WsPGNBzws5k9exHsCIQCO/XUkMtqrawGKPlCzaaxcWvdzn6PkFy+0BMIuEWUkGQIhAOIrNUPWvrbqvC3oNtR97rwyCcO/hcS7zDU5YjllIo8jAiB+fti3ekmaZeKJ4tDPt0dkuJC6d9qr+JsZ3S/PQ1I/WQIhAOY1tKXoE18tjodCs9ARfBX/Zl4xwW51l4rwqByI2Uu5
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAISZkQ/vIv9wtSOOmYasUF9jjJ5b7k5Ja927QBTTEkcD1FafIjjZb7Qqbx04BgeHQS6xIvCyNd5BzyvlMMNpfAMCAwEAAQ==
password: L7a0vFE3Tmae+bi9C0ghWlEe25MCwcEwXohwugNiJQyK3KPzay3eN5zpvprBYHPFHMCqIshnVdhUzOQB5Gt/LQ==
之后修改 Druid 的配置项,datasource 的密码改为 password,在 connectionProperties
加入公钥:
spring:
datasource:
// 省略...
password: L7a0vFE3Tmae+bi9C0ghWlEe25MCwcEwXohwugNiJQyK3KPzay3eN5zpvprBYHPFHMCqIshnVdhUzOQB5Gt/LQ== # 数据库密码
type: com.alibaba.druid.pool.DruidDataSource
druid: # Druid 连接池
// 省略...
connectionProperties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAISZkQ/vIv9wtSOOmYasUF9jjJ5b7k5Ja927QBTTEkcD1FafIjjZb7Qqbx04BgeHQS6xIvCyNd5BzyvlMMNpfAMCAwEAAQ==
// 省略...
filter:
config:
enabled: true
// 省略...