使用 jasypt 加密配置
前言
项目的配置文件中数据库密码以及redis密码是明文形式,要求改造成密文,网上查了一下,决定使用jasypt进行加密改造,记录一下改造过程。
正文
-
pom文件中引入jar包,附上项目地址ulisesbocchio/jasypt-spring-boot: Jasypt integration for Spring boot (github.com),版本可自行更换。
<!-- jasypt加密jar --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency>
-
配置文件中添加密钥配置。
jasypt.encryptor.password=XXX
-
对明文密码进行加密,获取密文字符串,jasypt默认使用StringEncryptor来进行加解密,我们也可以自定义自己的加解密类来替换它,具体使用可自行百度。
@Autowired private StringEncryptor stringEncryptor; @Test public void encrypt() { System.out.println(stringEncryptor.encrypt("password")); }
-
修改配置文件中密码,格式为ENC(密文),如:
spring.datasource.password=ENC(OJkStvw+GLtKyErZNQBtKNeXCHCFQs5X)
到此为止加密改造已经实现了,改动量并不大,还是非常简单的。jasypt除了最基本的密钥配置,还有其他的一些配置,这些配置没有的话会使用默认的值,这些配置参数的意义可自行百度。在启动项目时观察日志可以看到,如果没有特殊要求,使用默认即可。
注:1.加密时,多次加密结果会变化,均可使用,无需在意。
2.密钥放在配置文件中可能会被泄露,生产环境建议使用启动参数的形式传入密钥。
3.非springboot项目使用此jar包也可以实现,具体使用可自行百度。