当前位置: 首页 > news >正文

druid 数据库密码加密

背景

规避数据库账号密码泄露风险, 项目中使用druid管理数据库,该连接池支持密码加密, 那么下面演示下加密的过程。

加密过程

确定项目使用druid版本

  1. 定位druid使用的版本, 图中显示版本是1.2.23

image.png

定位 com.alibaba.druid包在maven资源库的位置

我的maven资源库目录是D:\software\maven\repository, 那么druid包的全路径自然是D:\software\maven\repository\com\alibaba\druid\1.2.23

加密密码

  1. 执行加密

java -cp druid-1.2.23.jar com.alibaba.druid.filter.config.ConfigTools 换成你的密码

  1. 比如:密码是 Data_compass_123, 执行下面的命令将得到 加密后的密码,公钥,私钥
java -cp druid-1.2.23.jar com.alibaba.druid.filter.config.ConfigTools yourdatasoucepassswrod > yourdatasoucepassswrod_加密后的文档.txt

image.png

项目druid配置

  1. 配置加密后的密码

image.png

  1. 配置公钥

spring.datasource.druid.masterConnectProperties=config.decrypt=true;config.decrypt.key=上一步获取的publicKey

  1. DataSouce加密配置

数据罗盘项目是通过AbstractRoutingDataSource抽象类管理多数据源的项目, 所以需要在各个DataSouce被初始化的时候,进行激活ConfigFilter过滤器,进行解密

@Value("${spring.datasource.druid.masterConnectProperties}")
private String connectProperties;@Bean
@ConfigurationProperties("spring.datasource.druid.master")
public DataSource masterDataSource(DruidProperties druidProperties) {DruidDataSource dataSource = DruidDataSourceBuilder.create().build();// 1.0 设置开启加密,加密的公钥的连接属性dataSource.setConnectionProperties(connectProperties);try {// 开启ConfigFilter,负责解密dataSource.setFilters("config");} catch (SQLException throwables) {throwables.printStackTrace();}return druidProperties.dataSource(dataSource);
}
  1. 启动成功,业务则胡南广场

总结

可以通过这个方式解密出密码ConfigTools.decrypt(String publicKeyText, String cipherText) , 这两个信息都暴漏在配置文件中, 后面可以引入nacos,公钥放入nacos。

如果是使用dynamic-datasource-spring-boot-starter项目的处理原理和这个项目类似,具体配置待补充。

相关文章:

  • 如何在 Android 和 iPhone 上发送群组文本
  • 从弦到膜:在1D和2D云环境中探索波动方程-AI云计算数值分析和代码验证
  • codeforces 958E1. Guard Duty (easy)
  • 软件开发 | 从 Azure DevOps迁移至GitHub企业版的最佳路径
  • Rust 学习笔记:Stream
  • 光谱数据分析的方法有哪些?
  • “交错推理”降低首token耗时,并且显著提升推理准确性!!
  • 使用 PyMuPDF 和 PySide6/PyQt6 编写的 PDF 查看器 (显示树状书签和缩略图列表,没有文字选择功能)
  • 异步爬虫---
  • C++11 Generalized(non-trivial) Unions:从入门到精通
  • 音乐调性关系与音准训练指南
  • 深刻理解深度学习的注意力机制Attention
  • vLLM用2*(8 H800)部署DeepSeek-R1-0528-685B
  • ubuntu 拒绝ssh连接,连不上ssh,无法远程登录: Connection failed.
  • 第18篇:数据库中间件架构中的服务治理与限流熔断机制设计
  • [Java恶补day24] 74. 搜索二维矩阵
  • 【MacOS】系统数据占用超大存储空间,原因、定位、清理方式记录
  • vue常用框架,及更新内容
  • ServiceNow培训第1期
  • 50种3D效果演示(OpenGL)
  • 网站站内优化怎么做/seo做得比较好的公司
  • 昌乐做网站/新的seo网站优化排名 网站
  • 有趣网站之家/uc搜索引擎入口
  • 做网站的公司利润/郑州网站seo技术
  • 网站制作公司站建设/杭州排名优化公司
  • 建德网站建设/2345网址导航怎么彻底删掉