工程中的配置文件如果把数据库的用户名密码写成明文的话是一件很危险的事情,之前也看见网上说可以对密码进行加密,用的时候再解密,因此今天我就尝试如何在spring boot 中的项目中实现关键信息的加密解密,并记录下来。
jasypt
Jasypt is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography works.
这是摘抄自Jasypt官网的一句描述,重点就是简单方便,同时和spring能够很好的集成,尤其是还提供了对spring boot的支持,可以参考starter的实现:https://github.com/ulisesbocchio/jasypt-spring-boot
集成步骤
1.在spring boot项目pom.xml中添加依赖:
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>1.14</version> </dependency>
2. 从网上下载一个jasypt-1.9.2.jar,在命令行中输入如下的命令对你想要加密的关键信息,以数据库的连接密码为例
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="<要加密的关键信息>" password=<加密的salt> algorithm=PBEWithMD5AndDES
结果类似下面,拷贝出OUTPUT下面的那一串字符串
3.回到到项目配置文件,将上面步骤拷贝的字符串更新到数据库的密码配置中,密码前需要加上ENC3个字符并且用括号括起来
spring.datasource.password=ENC(加密后的字符串)
4. 启动项目,启动命令时需要加入之前加密时配置的salt, 例如:
java -jar -Djasypt.encryptor.password=e9fbdb323432 -Xmx512m xxx.jar如果不想被别人从启动脚本中获取salt,可以采用在机器中配置相关环境变量,例如:java -jar -Djasypt.encryptor.password=${JASYPT_PASSWORD} -Xmx512m xxx.jar
检查一下是否访问数据库正常。
参考
https://www.cnblogs.com/zz0412/p/jasypt-001.html
欢迎关注我的个人的博客www.zhijianliu.cn, 虚心求教,有错误还请指正轻拍,谢谢
版权声明:本文出自志健的原创文章,未经博主允许不得转载