作为一名有经验的开发人员,是不习惯将明文直接放在代码中,总觉得有隐患。今天搭建了一个springboot项目,需要集成数据库,调取数据。
在配置 datasource 的时候,想要将密码改为密文,连接数据库时再进行解密(代码中是单数据库源,druid自带解密,配置一下就行),使用的是阿里的druid
1、pom文件引入druid
阿里 Druid为SpringBoot 提供专门的start依赖
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
另一种方法是在代码中调用ConfigTools类的入口方法。(其实上边的命令也是调用了ConfigTools类中入口函数)
单元测试调用ConfigTools:
运行结果:
3、application.yml配置
我试过使用下边这种写法:启动不报错,但是链接数据库时提示密码错误。(因为这种写法,不会解密,报错是正常的)
至此,加密解密完成。
值得注意的是DruidDataSource这个类,可以在源码中找到报错信息以及错误原因:如密码不正确,如何锁定到没有解密的这个原因:
这个方法点进去