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

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项目的处理原理和这个项目类似,具体配置待补充。

http://www.xdnf.cn/news/14124.html

相关文章:

  • FEMFAT许可与软件版本对应关系
  • 深度解析一下 llama.cpp 的源代码
  • 每日算法刷题Day30 6.13:leetcode二分答案2道题,用时1h10min
  • 打印机共享问题一键解决,附带设置维护工具
  • Python Day50 学习(仍为日志Day19的内容复习)
  • kafka版本升级3.5.1-->3.9.1(集群或单体步骤一致)
  • B/S架构
  • 上海市计算机学会竞赛平台2022年4月月赛丙组步步高
  • Qoppa Software提供的15款PDF产品组件科学学习
  • HarmonyOS 组件复用面试宝典 [特殊字符]
  • 【技术工具】源码管理 - GIT工具
  • Java 传输较大数据的相关问题解析和面试问答
  • ffmpeg subtitles 字幕不换行的问题解决方案
  • LeetCode 209.长度最小的子数组
  • 常见的数据处理方法有哪些?ETL中的数据处理怎么完成
  • 海马优化算法优化支持向量回归(SVR)模型项目
  • DAO 代码说明文档
  • 【计算机系统结构】期末复习
  • JVM-垃圾回收
  • ES6+核心特性
  • 数据可视化——一图胜千言
  • [python]pycddlib使用案例
  • Python小工具开发实战:从零构建自动化文件管理器的心得与体悟
  • Mac电脑数据恢复工具-Disk 企业版
  • 数据库中的索引作用:索引分类、索引失效、聚集索引和非聚集索引
  • Linux 系统 CPU 过高问题深度排查
  • 【WPF】MVVM的消息机制
  • Jupyter notebook中的感叹号!魔法命令介绍
  • iOS 26 beta1 真机无法执行hot reload
  • iOS Alamofire库的使用