jasypt 集成SpringBoot 数据库密码加密操作
作者:夏日鸢尾 发布时间:2024-01-26 03:34:48
昨天看到一片文章,说是某某旗下酒店数据库因为程序员不小心,把数据库明文密码上传到了GitHub上,导致酒店数据注册资料、入住信息,开房记录被下载倒卖的消息。
作为程序员,开发的时候为了简单,账户明明都设置很简单,基本上数据库密码都是明文的,没做什么操作,至少我待过的公司都是这样,无论是测试环境还是线上环境,想想,这个也是一大安全隐患,在此,趁现在不忙,做些基于springboot的数据库密码加密。
1、pom.xml添加jar包(不同jdk选择不同的版本):
<!-- jdk8 版本 整合jasypt对数据库密码加密 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.14</version>
</dependency>
<!-- jdk7版本-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.5-java7</version>
</dependency>
<!-- jdk6版本-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.5-java6</version>
</dependency>
2、window 窗口打开命令窗口,输入命令:
java -cp D:\mavenspace\repository\org\jasypt\jasypt\1.9.2\jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="123456" password=allanpassword algorithm=PBEWithMD5AndDES
java –cp jar包所在路径\jar包 org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=”你的数据库密码” password=加密字段,随意设置algorithm=默认PBEWithMD5AndDES加密
参数说明:
input =数据库链接密码
password=加密字段,随意设置(配置文件中需要添加此密码,相当于约定密码)
algorithm= 算法,默认PBEWithMD5AndDES
运行命令后如图:
----OUTPUT----------------------
Ekgkm+TzSmf7w7bcr90gMV6MAwj0waW+
OUTPUT 就是加密后的密码,在配置项目密码时结合ENC() 使用,如下图:
3、项目中添加配置(以springboot为例),如图:
# 数据库密码加密配置
jasypt:
encryptor:
password: allanpassword
spring MySQL密码写法:
password: ENC(Ekgkm+TzSmf7w7bcr90gMV6MAwj0waW+)
4、springboot启动类添加注解使其生效:
以上配置完成,启动项目运行,查询数据库,成功!
补充知识:SpringBoot(Spring)使用jasypt处理加密问题
前景:为了防止配置文件里面的明文密码泄露
1.引入依赖:(针对SpringBoot的)
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.8</version>
</dependency>
2.配置文件配置参数
#这里可以理解成是加解密的时候使用的密钥 (也可以考虑多配置认证信息jasypt.encryptor.algorithm)
jasypt.encryptor.password=youPassword
3.编写测试类得到加密密码
@Autowired
StringEncryptor stringEncryptor;
@Test
public void encryptPwd() {
String result = stringEncryptor.encrypt("yourPassword");
System.out.println(result);
}
4.修改配置文件里面的明文密码
spring.datasource.druid.first.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.druid.first.url=
spring.datasource.druid.first.username=root
spring.datasource.druid.first.password=ENC(AfHowGWt0tQ6LXRoJ7GkAlImTKkfDg1Y1Er)
5.通过命令行运行 jasypt-1.9.2.jar 包命令来加密解密
1.在jar包所在目录打开命令行,运行如下加密命令:
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="明文" password=jasypt配置密码 algorithm=PBEWithMD5AndDES
2. 使用刚才加密出来的结果进行解密,执行如下解密命令:
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="加密后的密文" password=jasypt配置密码 algorithm=PBEWithMD5AndD
来源:https://blog.csdn.net/qinzzjs47/article/details/82182623


猜你喜欢
- 首先必须将权重也转为Tensor的cuda格式;然后将该class_weight作为交叉熵函数对应参数的输入值。class_weight =
- 本文实例讲述了python二分法查找算法实现方法。分享给大家供大家参考,具体如下:二分法查找二分查找又称折半查找,优点是比较次数少,查找速度
- 1. 在router/index.js中使用meta属性的title设置好每个路由对应的title值/* router/index.js:
- 1、Matplotlib 简介数据可视化有助于更有效地讲述有关数据的故事并使其易于呈现。有时很难用静态图表来解释数据的变化,为此,我们将讨论
- 目录1. 反向引用_命名分组2. 正则函数小提示:总结1. 反向引用_命名分组# ### 反向引用import restrvar = &qu
- omitempty在go中的使用直接上代码:package mainimport ( "encoding/json&q
- 工作中,我们经常会遇到数据异常,比如说浏览量突增猛降,交易量突增猛降,但是这些数据又不是符合正太分布的,如果用几倍西格玛就不合适,那么我们如
- 今天来聊一下我在Go中对数据进行 JSON 编码时遇到次数最多的三个问题以及解决方法,大家来看看是不是也为这些问题挠掉了不少头发。自定义JS
- 什么是浮动?浮动是 css 的定位属性。我们可以看一下印刷设计来了解它的起源和作用。印刷布局中,文本可以按照需要围绕图片。一般把这种方式称为
- 1:在终端下:mysql -V。 以下是代码片段:[shengting@login ~]$ mysql -Vmysql Ver 14.7 D
- python如何处理“&#”开头加数字的html字符,比如:风水这类数据。用python
- fallthrough:Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个s
- 项目场景:常见的表单填写中都会遇到,比如新增信息,修改信息等,如下图相信大家对上面的验证都非常熟悉了,不多哔哔 本篇文章主要 想写 验证规则
- 报错信息粉丝群里面一个小伙伴想用pip安装库的时候出现的提示报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下
- Python是很好的爬虫工具不用再说了,它可以满足我们爬取网络内容的需求,那最简单的爬取网络上的图片,可以通过很简单的方法实现。只需导入正则
- 用CSS+DIV编写的实现在网页中显示圆角矩形的代码!希望对大家有用!谢谢支持!以下为CSS代码:<style> div.bg{
- 和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。实际
- 本文实例讲述了Flask框架通过Flask_login实现用户登录功能。分享给大家供大家参考,具体如下:通过Flask_Login实现用户验
- 最近在用python做数据统计,这里总结了一些最近使用时查找和总结的一些小技巧,希望能帮助在做这方面时的一些童鞋。有些技巧是很平常的用法,平
- 当你需要一个简单易用的导航菜单得时候。CSS Menu是个不错的选择。相对于Flash/Javascript,他们小巧轻便,而且方便使用。当