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
猜你喜欢
- 背景在一次进行SQl查询时,我试着对where条件中vachar类型的字段去掉单引号查询,这个时候发现这条本应该很快的语句竟然很慢。这个va
- <ScriptRUNAT=SERVERLanguage=VBScript>SubApplication_OnStar
- 在注册或购物车结帐的时候,需要用户填入个人资料,这个环节可以简练一下,我们只需客人填入邮政编码,然后就根据这个邮政编码,自动从数据库中取出相
- 今天帮一同学导入一个excel数据,我把excel保存为txt格式,然后建表导入,失败!分隔符格式不匹配,无法导入!!!!怎么看两边都是\t
- 在学习redis过程中提到一个缓存击穿的问题, 书中参考的解决方案之一是使用布隆过滤器, 那么就有必要来了解一下什么是布隆过滤器。在参考了许
- 这篇文章主要介绍了如何基于Python + requests实现发送HTTP请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
- 1 自动微分我们在《数值分析》课程中已经学过许多经典的数值微分方法。许多经典的数值微分算法非常快,因为它们只需要计算差商。然而,他们的主要缺
- 本文为大家分享了mysql8.0.15安装配置方法图文教程,供大家参考,具体内容如下将下好的压缩包解压后得到下图文件新建my.ini文件(注
- MySQL中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描。利用索引进行排序操作是非常快的,而且可以利用同一索引同
- 1、grid 布局说明:参数说明: sticky:在插件正常尺寸下,分配单元中多余的空间(如果没有声明属性,默认插
- ValueError: The number of FixedLocator locations (9), usually from a c
- 本文为大家分享了python实现图书馆研习室自动预约的具体代码,供大家参考,具体内容如下简介现在好多学校为学生提供了非常良好的学习环境,通常
- 目录1. 双向循环的练习2. break_pass_continue的使用3. for循环小提示:4. 小练习问题:答案:总结1. 双向循环
- 上节基本完成了SVM的理论推倒,寻找最大化间隔的目标最终转换成求解拉格朗日乘子变量alpha的求解问题,求出了alpha即可求解出SVM的权
- 什么是recovery?在elasticsearch中,recovery指的是一个索引的分片分配到另外一个节点的过程,一般在快照恢复、索引复
- 这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 一、文章概述本文将要讲述的是Python环境下如何用OpenCV检测人脸,本文的主要内容分为:1、检测图片中的人脸2、实时检测视频中出现的人
- 这是我在网上看到的一篇不错的mysql数据库优化文章,内容说的很全! 1、使用索引来更快地遍历表 缺省情况下建立的索引是非群集索引,但有时它
- 上个月,我写了一篇关于微软如何在向jQuery贡献代码的文章,也谈到了在第一批贡献的代码中的一些功能:jQuery模板和数据链接支持.今天,
- 本文实例讲述了python实现上传样本到virustotal并查询扫描信息的方法。分享给大家供大家参考。具体方法如下:import simp