SpringBoot整合jasypt加密配置文件敏感信息
创作时间:
作者:
@小白创作中心
SpringBoot整合jasypt加密配置文件敏感信息
引用
CSDN
1.
https://blog.csdn.net/qq_44981526/article/details/139310843
在项目中我们需要对配置文件的一些敏感信息进行加密处理,比如数据库账户密码,避免直接暴露出来,这种场景常常用于生产环境,我们不想让开发人员知道生产库的密码,有运维人员统一管理。
1. 引入依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
2. 加密工具类
public class JasyptUtils {
public static void main(String[] args) {
//这里假设我们的数据库密码是root
String info = encrypt("root");
//加密 TCFVL/wsN9AxelTDQyP/3g==
System.out.println(info);
//解密 root
System.out.println(decrypt(info));
}
/**
* 加密
*
* @param plaintext 明文
* @return
*/
public static String encrypt(String plaintext) {
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
// 指定算法
config.setAlgorithm("PBEWithMD5AndDES");
// 指定秘钥,和yml配置文件中保持一致
config.setPassword("llp");
encryptor.setConfig(config);
// 生成加密数据
return encryptor.encrypt(plaintext);
}
/**
* 解密
*
* @param data 加密后数据
* @return
*/
public static String decrypt(String data) {
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
config.setAlgorithm("PBEWithMD5AndDES");
config.setPassword("llp");
encryptor.setConfig(config);
// 解密数据
return encryptor.decrypt(data);
}
}
3. 启动类
@SpringBootApplication
@MapperScan(basePackages = "com.llp.jasypt.mapper")
public class JasyptApplication {
public static void main(String[] args) {
SpringApplication.run(JasyptApplication.class, args);
}
}
4. application.yml配置文件
这里我们可以对需要加密的字段进行加密处理,比如url、username、password 或者说redis的一些账户信息等等。
jasypt:
encryptor:
# 加密的秘钥
# password: llp
# 加密算法
algorithm: PBEWithMD5AndDES
iv-generator-classname: org.jasypt.iv.NoIvGenerator
property:
# 算法识别的前后缀,默认ENC(),数据库密文示例:password: "ENC(DzANBAhBWXxZqAOsagIBCoaw8FV4gYRbid7G70UEM24=)"
prefix: Enc(
suffix: )
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/llp?autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
username: Enc(TCFVL/wsN9AxelTDQyP/3g==)
password: Enc(TCFVL/wsN9AxelTDQyP/3g==)
#mybatis配置
mybatis:
#指定要扫描的mapper.xml位置; classpath:mapper/*.xml 扫描在类路径下的mapper目录下的。xml文件
mapper-locations: classpath:mapper/*.xml
#配置类型别名,通常指定实体类所在包,这样我们在xml中resultType="com.llp.springboot.mybatis.bean.Monster"就可以简写成Monster
type-aliases-package: com.llp.springboot.jasypt.entity
#配置mybatis sql打印日志
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#启用自动驼峰配置
map-underscore-to-camel-case: true
#通过config-location可以指定mybatis-config.xml,这样就可以用传统的方式来配置mybatis
#config-location: classpath:mybatis-config.xml
5. 启动配置
通常我们不会将password写在配置文件中,而是由运维人员进行统一管理,这样开发人员只能看到密文而不知道解密的秘钥
jasypt:
encryptor:
# 加密的秘钥
# password: llp
# 加密算法
algorithm: PBEWithMD5AndDES
iv-generator-classname: org.jasypt.iv.NoIvGenerator
property:
# 算法识别的前后缀,默认ENC(),数据库密文示例:password: "ENC(DzANBAhBWXxZqAOsagIBCoaw8FV4gYRbid7G70UEM24=)"
prefix: Enc(
suffix: )
如果打包后部署项目,可以使用如下命令在启动项目时指定秘钥:
#方式1:
java -jar xxx.jar -Djasypt.encryptor.password=加密数据的秘钥
#方式2:
java -jar xxx.jar --jasypt.encryptor.password=加密数据的秘钥
IDEA中如何配置启动参数
-Djasypt.encryptor.password=llp
本文原文来自CSDN
热门推荐
植物的呼吸作用与生态平衡(植物呼吸的意义及其在生态系统中的作用)
探秘北上太行山的壮丽之旅
焦虑的躯体化障碍怎么治
从野兽到传奇:《绝世唐门》中王秋儿的成长之路
M4A1 vs AK47:谁是现代战争之王?
菠菜育苗病虫害防治全攻略:从品种选择到综合管理
社区助力:老年人如何申请困难补助?
秋季菠菜育苗大作战:避开这三大坑!
《反恐精英》:M4A1与AK47谁才是战术之王?
冬季菠菜育苗,如何确保土壤无污染?
探寻四川三江之源:揭秘长江、岷江与嘉陵江的壮丽风光
Nat.Ecol.Evol.速递:生态位保守性促进应对气候变化的多样化
《老枪》:东北伤痕文艺作品的审美疲劳
《老枪》:以“枪”为核心,一个表意完整的隐喻体系
芳老师的学术写作秘籍:如何专业表达观点?
智能化服务时代:探索AI智能客服的优势与未来
42道严苛工序助推保宁醋入选国家级非遗名录
"共享智造"新模式赋能中小企业提质增效
寒从足下生!5大“强身”穴,4种泡脚法一定要了解
载人登月从这里启航!文昌航天发射场具有得天独厚优势
分手6年后,37岁刘亦菲深夜高调宣布喜讯,网友终于等到这一天
苹果三种食谱及做法
医生提醒:苹果加它一起煮,想不到这么厉害,好多人不懂吃可惜了
乡村振兴下的土地承包经营权出租新趋势
社交与人际关系:如何建立和维护健康的人际关系
世界睡眠日 | 北京佑安医院专家详解:从认识健康睡眠到专业治疗方案
吴彦姝vs曹翠芬:谁是你心中的"国民奶奶"?
从张学友演唱会看如何演绎老奶奶角色
“张江速度”打破“双十定律”,上海今年创新药械上市数量全国领先|科创这一年
药企止损:强生、辉瑞、上海医药、华东医药...