springboot项目使用druid对数据库密码的加解密

时间:2024-04-07 13:54:44

作为一名有经验的开发人员,是不习惯将明文直接放在代码中,总觉得有隐患。今天搭建了一个springboot项目,需要集成数据库,调取数据。

在配置 datasource 的时候,想要将密码改为密文,连接数据库时再进行解密(代码中是单数据库源,druid自带解密,配置一下就行),使用的是阿里的druid

1、pom文件引入druid

阿里 Druid为SpringBoot 提供专门的start依赖

springboot项目使用druid对数据库密码的加解密

2、生成加密的密码、公钥(为解密所用)、秘钥(为加密所用)

有两种方法(本质是一样的)

使用命令:java -cp jar包名 com.alibaba.druid.filter.ConfigTools 需要加密的密码

           注:这里的jar包指的是上图中引入的druid

          在下载下的jar包路径下使用cmd命令行

                         如:java -cp druid-1.1.14.jar com.alibaba.druid.filter.config.ConfigTools 123456

springboot项目使用druid对数据库密码的加解密

另一种方法是在代码中调用ConfigTools类的入口方法。(其实上边的命令也是调用了ConfigTools类中入口函数)

单元测试调用ConfigTools:

springboot项目使用druid对数据库密码的加解密

运行结果:

springboot项目使用druid对数据库密码的加解密

3、application.yml配置

springboot项目使用druid对数据库密码的加解密

我试过使用下边这种写法:启动不报错,但是链接数据库时提示密码错误。(因为这种写法,不会解密,报错是正常的)

springboot项目使用druid对数据库密码的加解密

至此,加密解密完成。

值得注意的是DruidDataSource这个类,可以在源码中找到报错信息以及错误原因:如密码不正确,如何锁定到没有解密的这个原因:

springboot项目使用druid对数据库密码的加解密

这个方法点进去 

springboot项目使用druid对数据库密码的加解密