springboot配置文件敏感信息加密
前言
一般情况下,配置文件会包含数据库账号密码、业务的一些密钥等重要的敏感信息,如果这些信息泄露,会产生严重后果,因此对这些敏感信息加密是必不可少的。 Jasypt
这 是一个 java 库,它允许开发人员以最小的努力将基本的加密功能添加到他/她的项目中,而无需深入了解密码学的工作原理 ,官网如下:http://www.jasypt.org/
其最核心的步骤就两个: 添加jasypt依赖 添加配置 Jasypt示例
构建springboot项目,该示例是基于springboot版2.7.3,jdk17,jasypt版本是3.04
1.引入依赖 com.github.ulisesbocchio jasypt-spring-boot-starter 3.0.4
2.配置文件
这是数据库账号密码的一个配置 spring.datasource.username=root spring.datasource.password=root
现在需要对username和password进行加密,加密后的结果如下: spring.datasource.username=ENC(eIOQM9aChGP4/CQk7RXAM7ZSK7AIBI9faeQb31M5/ouChpMIDHlB2+uSsIaZmxQU) spring.datasource.password=ENC(Y+tFn7NIUjXhUjtyfpDmI7EfL9ORPiRKSKrnxU+3wfFcHUo9cl2/wv4uAlc56lng)
ENC()是jasypt的一个标识符
3.利用代码程序加密(写一个加密工具)
这是一个小demo,所有的项目都可以使用这个工具生成加密密码
核心代码如下: package com.xm.demo.common.jasypt; import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.jasypt.iv.RandomIvGenerator; import org.springframework.stereotype.Component; @Component public class Jasypt { private static final String PBEWITHMD5ANDDES = "PBEWithMD5AndDES"; private static final String PBEWITHHMACSHA512ANDAES_256 = "PBEWITHHMACSHA512ANDAES_256"; /** * 加密 * @param str 加密的字符 * @param salt 密钥 * @return java.lang.String */ public String encryption(String str,String salt){ StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); encryptor.setPassword(salt); encryptor.setAlgorithm(PBEWITHHMACSHA512ANDAES_256); encryptor.setIvGenerator(new RandomIvGenerator()); return encryptor.encrypt(str); } /** * 解密 * @param str 解密的字符 * @param salt 密钥 * @return java.lang.String */ public String decryption(String str, String salt){ StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); encryptor.setPassword(salt); encryptor.setAlgorithm(PBEWITHHMACSHA512ANDAES_256); encryptor.setIvGenerator(new RandomIvGenerator()); return encryptor.decrypt(str); } }
4.添加配置参数 jasypt.encryptor.password=demo
这个配置是必须的,但这里有个问题就是,把加密的密钥放到配置文件里,如果泄露了,别人还是可以解密的,因此需要把这个配置放到别的地方去,当然开发阶段把密钥放到配置中是没有问题的。
方式一: 直接作为程序启动时的命令行参数来带入 java -jar xxx.jar --jasypt.encryptor.password=demo
方式二: 直接作为程序启动时的应用环境变量来带入 java -Djasypt.encryptor.password=demo -jar xxx.jar
5.jasypt配置扩展 jasypt.encryptor.password=demo #加密密钥 jasypt.encryptor.algorithm=PBEWITHHMACSHA512ANDAES_256 #加密算法(默认) jasypt.encryptor.property.prefix=ENC( #标识符 jasypt.encryptor.property.suffix=) #标识符
实际开发的流程是这样的:
运维提供加密后的信息和密钥,例如加密后的账号密码,然后开发人员只需要在pom文件中添加jaspyt依赖,以及配置文件中加上jasypt.encryptor.password=密钥(开发阶段)。项目上线了,运维会把密钥作为程序启动时的命令行参数来带入 。
祖山济心寺,真正的面朝大海,聚山之灵气水之精华图文刘新田本文由作者授权发布祖山,秦皇岛第一名山,北距海岸约50千米,自然风光清幽旖旎,人文遗迹也十分丰富。万里长城逶迤而过,铁瓦乌龙殿深藏幽谷,更有那云遮雾隐意蕴悠长的济心古寺高
天安门是谁给起的名?马上到国庆节了。一说到国庆节,首先想到的就是天安门广场了。那今天咱们就来说说天安门的历史。大家都知道,天安门是明清两代北京皇城的正门。城台下有券门五阙,中间的券门最大。中间这道门可
PS颤抖了!全新2022PortraitPro智能磨皮软件技术简直不要太爽磨皮前磨皮后今天阿娇给小伙伴们带来2022最新PortraitProfessional中文版,是一款新颖而且智能的人像磨皮软件,它能够在短时间内为你处理出专业水准的高质量图像,你只
将思念渡进你的心海头号周刊怦然心动触动了心弦入了心的思念涌出了浓浓的情感难以忘怀刻骨铭心情意不断想念的时候倚在窗前遥望夜空繁星点点思念成疾涌上了眉间放不下的眷恋将思念泛滥依恋想念心中也暖想你的每一个
广东的小黄果树瀑布,藏在韶关深山中,瑶池溶洞太神奇了国庆节还有一个星期就到了,想好去哪玩了吗?乐玩君给大家推荐粤北一个非常适合度假的地方,蓝山源岭南东方温泉酒店。这个地方的自然景观非常不错,不单有广东的小黄果树瀑布,还有瑶池溶洞,国
醉美界岭口秦皇岛晚秋值得一去的好地方沿公路一路北行,渐近目的地,隔窗而望,小桥流水人家绕,水虽然不多,散落在裸露的河石间,足以让长时间看不到河的人精神振奋。每隔几处就有小桥,房子依河而建,一群群洁白的鸭子,或河边或是
天冷这汤可以多喝,清爽美味去秋燥,暖身暖胃又滋补天冷这汤可以多喝,清爽美味去秋燥,暖身暖胃又滋补。秋天天气干燥,皮肤干喉咙也干燥,皮肤表面摸上去都会发出沙沙的声音,这样的天气最应该做的事就是补充水分,滋补又润燥的糖水润肤乳和面膜
触及心灵深处的天籁,聆听花夜花夜花调谢了。在风里面彩色花瓣飞旋着那是在祭奠一段失去的爱情夜,也来了。灯火深处伤痛开始醒来了无所不在吞噬着脆弱的心灵孤独的人啊请你唱首歌为那离去的人啊送行该走的走吧,该留的留下又
个人成长破圈,你准备好了吗?头条创作挑战赛你好,我是编程魔法师,欢迎来到师享空间,这个频道是关于读书心得和自我成长的频道,和我一起学习吧。你在人生第几圈层?一场不断破圈的游戏。舒适圈当下选择舒适的圈子,做些熟
思君不见在天涯,啼鸟惊残梦,陌上行人踏落花吹鬓华,思君不见在天涯,啼鸟惊残梦,陌上行人踏落花。鸟声啼破一林烟,风送落花到眼前,独坐小窗思往事,东君吹绿柳如绵。落花风不知,枝头啼鸟怨归迟,东君吹绿一年烟雨思。夜雨敲窗柳絮乱纷
十四字文艺浪漫文案我与春风皆过客,你携秋水揽星河1。总有人间一两风,填我十万八千梦。2。在太阳下山前,原谅今天的不开心。3。一半烟火以谋生,一半诗意以谋爱。4。生活既有烟火俗常,也有诗意清欢。5。时光和爱,会把我们变成更好的人。