SpringBoot集成Jasypt安全框架,配置文件内容加密
程序员文章站
2022-06-28 11:16:59
转载于(https://zhiku8.com/springboot-jasypt.html) 我们在SpringBoot项目中的yml或者properties配置文件中都是明文的,相对而言安全性就低了很多。都知道配置文件中的都是一些数据库连接用户名密码啊、一些第三方密钥等信息。所以我们谨慎点,使用下 ......
转载于()
我们在springboot项目中的yml或者properties配置文件中都是明文的,相对而言安全性就低了很多。都知道配置文件中的都是一些数据库连接用户名密码啊、一些第三方密钥等信息。所以我们谨慎点,使用下加密吧。
这里面使用的是jasypt的安全框架。
一:在pom.xml中引入jar包
<!-- jasypt加密 --> <dependency> <groupid>com.github.ulisesbocchio</groupid> <artifactid>jasypt-spring-boot-starter</artifactid> <version>2.0.0</version> </dependency>
二:yml配置文件中引入我们的passwodk,也就是所谓的key
# 配置文件加密key jasypt: encryptor: password: panther
三:创建我们一个工具包
代码示例:jasyptutils.java
package com.zhuang.common.utils; import org.jasypt.encryption.pbe.pooledpbestringencryptor; import org.jasypt.encryption.pbe.standardpbebyteencryptor; import org.jasypt.encryption.pbe.config.simplestringpbeconfig; /** * @created with intellij idea * @author : payne * @date : 2018/5/18 - 10:37 * @copyright (c), 2018-2018 * @descripition : jasypt安全框架加密类工具包 */ public class jasyptutils { /** * jasypt生成加密结果 * * @param password 配置文件中设定的加密密码 jasypt.encryptor.password * @param value 待加密值 * @return */ public static string encryptpwd(string password, string value) { pooledpbestringencryptor encryptor = new pooledpbestringencryptor(); encryptor.setconfig(cryptor(password)); string result = encryptor.encrypt(value); return result; } /** * 解密 * * @param password 配置文件中设定的加密密码 jasypt.encryptor.password * @param value 待解密密文 * @return */ public static string decyptpwd(string password, string value) { pooledpbestringencryptor encryptor = new pooledpbestringencryptor(); encryptor.setconfig(cryptor(password)); string result = encryptor.decrypt(value); return result; } public static simplestringpbeconfig cryptor(string password) { simplestringpbeconfig config = new simplestringpbeconfig(); config.setpassword(password); config.setalgorithm(standardpbebyteencryptor.default_algorithm); config.setkeyobtentioniterations("1000"); config.setpoolsize("1"); config.setprovidername("sunjce"); config.setsaltgeneratorclassname("org.jasypt.salt.randomsaltgenerator"); config.setstringoutputtype("base64"); return config; } public static void main(string[] args) { // 加密 system.out.println(encryptpwd("panther", "root")); // 解密 system.out.println(decyptpwd("panther", "gfp4qfnrjeqmvzn1noemiq==")); } }
四:使用方法
上面工具包种有main方法,填入你配置的key,然后填入你需要加密的value,直接运行即可。
类似配置文件中的数据库连接
# 开发环境 spring: datasource: driver-class-name: com.mysql.jdbc.driver url: jdbc:mysql://127.0.0.1:3306/panther_dev?useunicode=true&characterencoding=utf-8 # jasypt加密 可到common包中找到jasyptutil加解密工具类生成加密结果 格式为enc(加密结果) username: enc(s2g86yhb0omjmenxuagwyw==) password: enc(gfp4qfnrjeqmvzn1noemiq==)