SpringBoot2+mybatis+jasypt实现数据库连接池加密的大坑

先吐槽一下那些无脑转载的“砖家、叫兽”,误人子弟。

一句话:运行时需要加上参数jasypt.encryptor.password=saltnewfor

详细步骤如下:

1、添加Maven依赖(Gradle的类似,不举例了)

 
            com.github.ulisesbocchio
            jasypt-spring-boot-starter
            2.1.0
 

2、生成加密密码

第一步:下载jar包:jasypt-1.9.2.jar

第二步:执行加密:

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="zhilin123!@#" password=saltnewfor algorithm=PBEWithMD5AndDES

其中password=saltnewfor,saltnewfor 代表的是盐、盐、盐 ,记住他,后续你需要它。

input="zhilin123!@#" ,这个才是你的数据库明文密码(当然,如果你想给别的数据加密也可以)

执行完命令会输出以下信息:

SpringBoot2+mybatis+jasypt实现数据库连接池加密的大坑_第1张图片

加密算法:PBEWithMD5AndDES(默认算法)

盐:saltnewfor(记住它,记住它,记住它)

被加密的字符串:zhilin123!@#

加密后字符串:AWrUSCdkwKxGBL1N9E9sQzZNqPeyM+V6(记住它too)

3、修改boot的配置文件application.properties(这是我的名字,你的名字自己看着办)

添加:

jasypt.encryptor.password=saltnewfor

修改:

spring.datasource.password=zhilin123!@# 

为 

spring.datasource.password=ENC(AWrUSCdkwKxGBL1N9E9sQzZNqPeyM+V6)

4、修改启动类,添加注解:@SpringBootApplication

当然,一般情况Boot的主类都要加这个注解

5、启动程序,可以用了。逗你的,你启动就会报错:

诸如:什么找不到jasypt.encryptor.password、什么spring.datasource.password不能转成String 啥啥的。

为什么呢?

我们看官网一句不起眼的话

所有属性度可以在属性文件中声明,但是jasypt.encryptor.password不能仅写在属性文件里,还要加入到 系统属性、命令行参数、或者环境变量里。

当我们在开发时,需要在 运行boot的 运行配置中加上参数:–jasypt.encryptor.password=saltnewfor

SpringBoot2+mybatis+jasypt实现数据库连接池加密的大坑_第2张图片

在生成环境,运行jar包时候,加上参数:--jasypt.encryptor.password=saltnewfor

这样,就可以实现jasypt对数据库连接池密码加密了。

 

转载请注明出处。

你可能感兴趣的:(springboot)