前言
项目的配置文件中数据库密码以及 redis 密码是明文形式,要求改造成密文,网上查了一下,决定使用 jasypt 进行加密改造,记录一下改造过程。
正文
-
pom 文件中引入 jar 包,附上项目 github 地址 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 包也可以实现,具体使用可自行百度。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于