druid jar包_使用druid实现Spring boot配置文件中数据库密码密文存储

通常在编写代码的时候,数据库的用户名和密码以明文的方法写到配置文件中,系统运维为了保证一定的安全性,要求我们在配置文件中使用密文的方式存储,本文主要介绍使用druid实现数据库密码密文显示的方法。

一、基本情况

druid包中ConfigTools类提供了数据库密码加密的方式,使用非对称加密算法,在配置文件中配置加密后的密码密文和公钥信息,最终实现配置文件中无密文的内容。

二、具体实现

2.1 配置pom.xml文件

  com.alibaba  druid-spring-boot-starter  1.1.23

在这里使用了最新的maven依赖版本,大家可以根据实际项目中选择自己项目使用的版本。

2.2 密码生成工具类

druid 提供2种方法生成配置文件中的公钥和密码密文,第一种使用命令行方式,第二种使用ConfigTools类的相关方法生成需要的参数。

  • 命令行方式: pom.xml文件中使用1.1.23版本的druid-spring-boot-starter,在maven本地仓库中找到对应的druid.jar包,直接执行以下命令:
java -cp druid-1.1.23.jar com.alibaba.druid.filter.config.ConfigTools 1qaz@WSX

其中, druid-1.1.23.jar替换为项目使用druid版本包,1qaz@WSX替换为数据库密码, 具体执行示例如下:

0c1c458446b246f9be92f2292c906d78

生成密码密文示例

  • ConfigTools类生成 除了命令行的方式,可以通过自己编写java类,调用ConfigTools类相关的方法,生成配置文件中的公钥和密码密文,具体代码如下:
public static void main(String[] args) throws Exception {        String password = "你的密码";        if(args.length >0){            password = args[0];        }        System.out.println("密码[ " + password + " ]的加密信息如下:");        String[] keyPair = ConfigTools.genKeyPair(512);        // 私钥        String privateKey = keyPair[0];        // 公钥        String publicKey = keyPair[1];        // 用私钥加密后的密文        password = ConfigTools.encrypt(privateKey, password);        System.out.println("privateKey:" + privateKey);        System.out.println("publicKey:" + publicKey);        System.out.println("password:" + password);                String decryptPassword = ConfigTools.decrypt(publicKey, password);        System.out.println("decryptPassword:" + decryptPassword);    }

其中,需要加密的密码通过执行参数传入,如果传入参数为空,可使用默认密码变量password。

生成密码密文和公钥信息如下图所示:

f5c46d5126fb47eda2e166fff8a2a9a0

ConfigTools生成密码密文和公钥信息

注意:无论使用哪种生成密码密文和公钥信息,生成的public-key与password的内容都不一样,以命令行的方式为例:

7c0ff9741f9f4c8ca9422f730946f062

每次生成密码密文和公钥对比信息

红框内为公钥差异部分,密码密文完全不一致。

2.3 修改配置文件

spring.datasource.name=druidDataSourcespring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.url=jdbc:mysql://localhost:3306/spring_test?useSSL=true&serverTimezone=UTCspring.datasource.username=rootspring.datasource.password=Dh6oG0SyuRnNC4x2iWy/oZC/JKBAOlay0CWSI05+zJ3j0DHtmF0ur4ehi1afpfEv553BX2iNJobv4KZT7I6dFg==spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.publicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKgSyG+YWhKXsRExCJA/1463YZeo7jC07bPg2kcgC3mCwhy6S5DPBD8wvinOWTiCt7JtDSZrSiyxEhVwwSzf7usCAwEAAQ==spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${spring.datasource.publicKey}

参考资料

[1]

使用ConfigFilter: https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter

[2]

如何在Spring Boot中配置数据库密码加密?: https://github.com/alibaba/druid/wiki/%E5%A6%82%E4%BD%95%E5%9C%A8Spring-Boot%E4%B8%AD%E9%85%8D%E7%BD%AE%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AF%86%E7%A0%81%E5%8A%A0%E5%AF%86%EF%BC%9F

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s 手动恢复redis 集群_高工面试之:redis的几种集群方式你都熟悉吗?

Redis三种集群方式:主从复制、哨兵模式和Cluster模式一、主从复制模式Redis配置成主从模式,主库(Master)只负责客户端的写数据,从库(Slave)只负责客户端的读数据。主从数据复制过程如图所示:主从复制原理:slave redis连…

jsbridge原理_React Hooks 原理与最佳实践

1. 前言React Hooks 是 React 16.8 引入的新特性,允许我们在不使用 Class 的前提下使用 state 和其他特性。React Hooks 要解决的问题是状态共享,是继 render-props 和 higher-order components 之后的第三种状态逻辑复用方案,不会产生 JSX 嵌…

html小圆图堆叠轮播,每次移一张图片的无缝轮播图

my动画轮播图*{list-style: none;margin: 0px;padding: 0px;}.carousel{width: 530px;height: 280px;overflow: hidden;position: relative;}.carousel .imgList{width: 9999px;position: absolute;}.carousel .imgList>li{float: left;}.carousel .imgList>li>img{wi…

mfc绘制bezier b样条三种曲线_生存曲线(二):SPSS和Origin绘图教程及相关问题

上期生存分析推送后,有粉丝在后台问:有发生率的情况,为什么要做生存曲线分析?举个例子:临床试验中,共招募30位胃腺癌患者,均分为3组,分别使用了A/B/C三套不同的治疗方案,…

8位可控加减法电路设计_高级工程师:相同的地线GND,却有不同的电路设计含义...

问一个简单而又很难回答的电路问题:电路中的地线GND,它的本质是什么?工程师,在研发设计一个电路项目时,一般会经历三个阶段:电路项目PCBA板1,项目方案论证项目方案论证,是在项目前期…

word刷子刷格式_Excel技巧—开始菜单之格式刷六大功能

点赞再看,养成习惯千里之行,始于足下今天我们主要学习的是“第一区块-剪贴板”中的“格式刷”。“格式刷”主要将一个对象的颜色、字体样式、字体大小、边框样式等所有格式复制到目标对象上,我们可以把它理解为格式的复制粘贴。说到“格式刷”…

cwinthread*线程指针怎么销毁结束_最新版Web服务器项目详解 01 线程同步机制封装类...

点 击 关 注 上 方"两猿社"设 为"置 顶 或 星 标",干 货 第 一 时 间 送 达。互 联 网 猿 | 两 猿 社基础知识RAIIRAII全称是“Resource Acquisition is Initialization”,直译过来是“资源获取即初始化”.…

您的计算机无法访问dota2,解决win7系统DOTA2无法连接至Steam网络的设置方法

随着电脑的使用率越来越高,我们有时候可能会遇到win7系统DOTA2无法连接至Steam网络问题,如果我们遇到了win7系统DOTA2无法连接至Steam网络的问题,要怎么处理win7系统DOTA2无法连接至Steam网络呢?接下来给大家带来win7系统DOTA2无法…

根据经纬度计算范围_高中地理必修一二三思维导图+计算公式全汇总!能用3年...

必修一必修二必修三计算公式1.经纬度计算:经度差与地方时差算经度——地方时每相差1小时,经度相差1;纬差法与正午太阳高度算纬度——正午太阳相差多小,纬度相差多少;北极星的仰角即地平高度等于当地地理纬度;经纬线上长度算经纬度——1经线长…

linux 系统 可视化工具实时监控_Linux上的实时监控平台-你需要这样做

应朋友们要求,介绍上Linux系统下的实时监控平台,在上次提到了glances,它提供了较多的监控指标,那如果我们要看历史数据呢?某一时间段的回放呢?显然glances是做不到的。因此,实时监控平台就应运而…

linux 普通用户touch权限不够_Linux 开启指令

简单指令1.1、 ls 指令语法1:# ls [路径]表示列出指定路径下的文件夹和文件 的名字,如果路径没有指定则列出当前路径下的(list)列如:在root用户的家目录中输入ls命令,则会看到以下的效果:要求列…

5、this调用语句必须是构造函数中的第一个可执行语句_ES6中的Promise和Generator详解...

简介ES6中除了上篇文章讲过的语法新特性和一些新的API之外,还有两个非常重要的新特性就是Promise和Generator,今天我们将会详细讲解一下这两个新特性。Promise什么是PromisePromise 是异步编程的一种解决方案,比传统的解决方案“回调函数和事件”更合理和…

labelimg如何调整框的颜色_如何制作摄影集(下)

如果说上篇讲的是有关排版设计,那么下篇就是有关具体实施了。如果你正对作品集的制作跃跃欲试,那么下篇的内容仍旧非常重要,而且非常干货。 目录:软件推荐(Id)字体推荐纸张选择打印方式(激光、喷…

highcharts 显示平均值数值_拼多多评价多久能显示,有什么出评价技巧吗?

很多商家都知道,拼多多的评价,有时不一定会在买家评价后就立马出现,一般得等一段时间才会显示,,这个时间一般不会很久,24小时之内,评论一般在审核通过后就会展示出来。如果长时间不展示&#xf…

辽宁省大学生计算机系统与程序设计竞赛,2019CCF大学生计算机系统与程序设计竞赛(华东分赛区)在我校顺利举办...

5月18日,2019CCF大学生计算机系统与程序设计竞赛(CCSP)华东分赛区比赛及颁奖会在我校举办。今年是CCSP大赛首次采用区域分赛区的比赛,共分为7个赛区,包括东北区(哈尔滨工业大学承办),华北区(北京邮电大学承办)、华东区(南京航空航…

arm b bl 地址无关码_ARM汇编语言入门(六)

Part 6:条件状态和分支在探讨CPSR时我们已经接触了条件状态。我们通过跳转(分支)或者一些只有满足特定条件才执行的指令来控制程序在运行时的执行流。通过CPSR寄存器中的特定bit位来表示条件状态。这些位根据指令每次执行的结果而不断变化。例…

bcp out 带列名导出_从零开始学习 MySQL 系列索引、视图、导入和导出

阅读本文大概需要 8 分钟前言上篇文章我们学习了数据库和数据表操作语句,今天我们学习下数据库索引,视图,导入和导出的知识。作为基础篇,不会涉及到关于索引和视图的高级应用和核心概念,但是基本操作大家会了解&#x…

axure 输入框默认灰色字_Axure如何应对意外关闭

在使用Axure的时候,相信很多朋友都遇到过这样的情况:axure提交的东西都不见了。内容做到一半或者已经快要完成时,软件意外关闭,导致做的内容意外丢失。看着自己的劳动成果就这样浪费了,这种情况真的令人心疼。如果遇到…

matlaba绘制gps星空图_网络图横道图绘制软件 5.0免锁版告别纯手工绘制,修改工作量大!...

按图片加小编微信今日资料会员专属资料链接链接:https://pan.baidu.com/s/1AZY3cPeEv72GBRfESIwk_w提取码:88B8安装教程:1、下载压缩文件,解压后双击【网络计划V5.exe】,点击立即安装。2、没有替换补丁打开软件是这种情…

xp访问不了win10计算机,如何解决winxp访问win10共享打印机提示凭据不足

在win10的电脑上对着始按钮点鼠标右键,点击运行,或者直接“winR”输入gpedit.msc,点击确定,在本地策略组编辑器中依次点开——计算机配置——windows设置——安全设置——本地策略——安全选项,在右边的列表中找到“网…