springboot yml配置文件数据库密码加密
为了安全考虑,公司打算将yml配置文件中的数据库连接信息的账号,密码进行加密!
1.了解到 常用的加密方式:
spring boot整合Jasypt实现yml配置文件敏感信息加密
Springboot druid数据库密码加密配置步骤(多数据源参考配置)
- 创建一个DesPassword类写main方法,继承druid中的DruidPasswordCallback类。
- 在main方法中引用ConfigTools.decrypt(publickey, password)方法,填入已知的公钥和密码。
- 打印结果,done
import com.alibaba.druid.filter.config.ConfigTools; import com.alibaba.druid.util.DruidPasswordCallback; public class DesPassword extends DruidPasswordCallback { public static void main(String[] args) throws Exception{ String publickey = 填入公钥; String password = 填入密码; String pwd = ConfigTools.decrypt(publickey, password); System.out.println(pwd); } }
2.Druid加密具体的操作
2.1 测试类中生成公私钥 加密密文。
- 123456为未加密的数据库密码
- privateKey为生成的私钥
- publicKey为生成的公钥
- password为加密后的数据库密码
以上的公钥和密码钥,要特别注意,解密的话是用这两个进行解密
2.2 配置数据库加密 ,yml中将password修改为第一步生成的密文,配置 connectionProperties,启用加密,配置公钥
2.3 ,配置过滤器 config
3.多个数据源重复,2.1,2.2
配置Druid出现:java.lang.IllegalArgumentException: Failed to decrypt.
publickey 不用表达式 指向 直接赋值
3.使用jasypt
jasypt版本和springBoot版本之间的对应关系如下:
- SpringBoot2.1.x 对应使用 jasypt2.10
- SpringBoot1.5.x 对应使用 jasypt1.5
对spring boot yml配置文件敏感信息加密处理的两种方式
参考:
对spring boot yml配置文件敏感信息加密处理的两种方式
Springboot druid数据库密码加密配置步骤(多数据源参考配置)
踩坑注意
当数据库使用特殊符号为密码时,无法使用加密 会解密失败,如!@#¥%……&* 等
经检验这两个是可以的,源码里解密过程使用了final 咱们无法去修改它,所以如果要使用Druid来加密数据库密码,就不要使用特殊符号拉。
该问题倒腾了好久,最后经过不断的测试终于找到了问题。网上几乎找不到解决方案和加密说明。所以就写下来记录一下!
SpringBoot整合dynamic(全网最舒服)
springboot 数据库加密jasypt
System.setProperty("jasypt.encryptor.password", DHConstants.JASYPT_ENCRYPTOR_PASSWORD);这种写法是取代将密码盐配置在yml。在启动类写入了这行代码,第二步的yml配置密码盐可以不用配置。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
2021-09-28 sql语句左链接left join--3张表关联