对数据库密码进行,防止敏感信息泄漏
第一步导入druid依赖
<!--druid 连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
第二步创建工具类
使用工具类DruidEncryptUtil实现加密与解密
import com.alibaba.druid.filter.config.ConfigTools;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
/**
* 数据库敏感信息加密
*
* @Author: yza
* @date: 2024/7/9
*/
public class DruidEncryptUtil {
private static String publicKey;
private static String privateKey;
static {
try {
String[] keyPair = ConfigTools.genKeyPair(512);
//获取私钥
privateKey = keyPair[0];
System.out.println("privateKey = " + privateKey);
//获取公钥
publicKey = keyPair[1];
System.out.println("publicKey = " + publicKey);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchProviderException e) {
e.printStackTrace();
}
}
//加密
public static String encrypt(String plainText) throws Exception {
String encrypt = ConfigTools.encrypt(privateKey, plainText);
System.out.println("encrypt = " + encrypt);
return encrypt;
}
//解密
public static String decrypt(String encryptText) throws Exception {
String decrypt = ConfigTools.decrypt(publicKey, encryptText);
System.out.println("decrypt = " + decrypt);
return decrypt;
}
public static void main(String[] args) throws Exception {
//想要加密的敏感部分
String encrypt = encrypt("123456");
System.out.println("encrypt = " + encrypt);
}
}
运行生成公钥与私钥,以及密码对应加密的密码
第三步配置application.yml
filter:
config:
enabled: true
connect-properties:
config.decrypt: true
config:
decrypt:
key: ${publicKey}
publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKjSpUv+DRBb0tonVecZCl1h4nwC8uT62bj7HgUTCYsd2ulJPWf+r2bikg4szUkjZn4j1en6qfHsM9jpwK+Pgs0CAwEAAQ==
再将数据库密码改为加密的密码即可