配置文件中敏感信息的简单加密(Springboot)
Springboot项目,使用jasypt进行加密敏感信息应该是最简单的加密方式了,而jasypt本身也包含非常丰富的使用方法。
附上项目连接,文档也是很清晰的 https://github.com/ulisesbocchio/jasypt-spring-boot
首先导入依赖
如果是含有启动类的springboot项目,启动类有@SpringBootApplication或者配置开启@EnableAutoConfiguration,在此项目中任何地方都可以使用加密属性
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
依赖导入后,可以自定义configuration来创建bean,调用对应加密方法,也可以直接写个main方法生成需要的明文或密文然后删除掉。
我这里是用maven插件来调用。
<plugin>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-maven-plugin</artifactId>
<version>3.0.5</version>
</plugin>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kax5vgO5-1672132314437)(配置文件中敏感信息的简单加密(Springboot).assets/image-20221227154344000.png)]
加载好插件后可以看到有很多可用的命令,最简单的加密命令如下所示,意思是把字符串theValueYouWantToEncrypt加密,密钥是the password,执行这个命令结果会打印在输出流中;那解密就是decrypt-value,反着操作就行了。
mvn jasypt:encrypt-value -Djasypt.encryptor.password="the password" -Djasypt.plugin.value="theValueYouWantToEncrypt"
稍微复杂一点就是我想直接让它识别项目中我要加密的数据,那默认路径是src/main/resources/application.properties,我们要修改一下路径,然后还要用DEC(…)将需要加密的数据括起来,例如
mvn jasypt:encrypt -Djasypt.plugin.path="file:src/main/test/application.properties" -Djasypt.encryptor.password="the password"
但是我使用3.0.4版本的时候路径修改不生效,还是只能识别到src/main/resources/application.properties,很难受。