jasypt 集成SpringBoot 数据库密码加密

        昨天看到一片文章,说是某某旗下酒店数据库因为程序员不小心,把数据库明文密码上传到了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

 

运行命令后如图:

jasypt 集成SpringBoot 数据库密码加密

 

 

 

----OUTPUT----------------------

 

Ekgkm+TzSmf7w7bcr90gMV6MAwj0waW+

 

OUTPUT 就是加密后的密码,在配置项目密码时结合ENC() 使用,如下图:

 

3、项目中添加配置(以springboot为例),如图:

jasypt 集成SpringBoot 数据库密码加密

 

# 数据库密码加密配置

jasypt:

  encryptor:

password: allanpassword

spring MySQL密码写法:

password: ENC(Ekgkm+TzSmf7w7bcr90gMV6MAwj0waW+)

 

4、springboot启动类添加注解使其生效:

 

jasypt 集成SpringBoot 数据库密码加密

以上配置完成,启动项目运行,查询数据库,成功!