java配置文件密码加密工具:jasypt

2,996 阅读1分钟

概述

有些项目可能需要将配置中的一些属性加密防止泄露,比如一些密码属性。在java项目中,jasypt工具就实现了这样的功能。

他的实现原理是将密码加密得到密文,将密文放入配置文件中。运行时读取到密文,将密文解密得到原文。

github.com/ulisesbocch…

加密原文时需要密码,加密后的值类似为:package.tagsJsonName=ENC(BPOpaQk2Uf2Oa+GVrOyxZrt4fAwAL3o0b2Mx1WBC64myVxo5oRVAXlo9dApiDH4F)

代码运行时再使用密码进行解密,解密的密码可以放入配置文件、系统属性、命令行或是环境变量中。但是不推荐直接将密码放入配置文件中。

加密

使用maven插件进行加密,添加maven plugin:

<plugin>
  <groupId>com.github.ulisesbocchio</groupId>
  <artifactId>jasypt-maven-plugin</artifactId>
  <version>3.0.3</version>
</plugin>

加密一个字符串:

mvn jasypt:encrypt-value -Djasypt.encryptor.password="the password" -Djasypt.plugin.value="theValueYouWantToEncrypt"

加密配置文件

将配置文件中 src/main/resources/application.properties 值包含 DEC(加密前的值) 属性加密:

mvn jasypt:encrypt -Djasypt.encryptor.password="the password"

这会自动将配置文件中所有包含DEC的属性的值替换成ENC(加密后的值),如sensitive.password=DEC(secret value) 替换成 sensitive.password=ENC(encrypted)

解密一个加密后的字符串

mvn jasypt:decrypt-value -Djasypt.encryptor.password="the password" -Djasypt.plugin.value="yVrdhoqif3oeZOKsRsNn0OosbpbisEhhBYQdYDG9yViIVzOKxL7Hl5SkkUxrt0XY+ADjMpa+JWE3MGJ5e9b/ZQ=="

解密配置文件

mvn jasypt:decrypt -Djasypt.encryptor.password="the password"

会将 src/main/resources/application.propertiesENC包含的加密后的值替换为原文后输出到屏幕,注意解密不会自动修改文件。