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
        // 省略...