SpringBoot中的配置文件信息加密
0.背景
在SpringBoot项目中,有的配置文件信息比较敏感,比如数据库的密码信息等,直接以明文的形式写在配置文件中或许并不安全.
1.步骤
1.1 pom文件
依赖中加入
插件中加入
注意此处的 configuration节点,默认是项目的properties文件,你没移动位置可以去掉这个节点,这里我配置文件自定义了新路径.
1.2 配置文件修改
将要加密的信息用DEC()
包裹,即DEC(待加密信息)
,例如:
1.3 mvn命令加密文件
password=
后为密码,注意没有""
包裹,你写了"
的话,那么你的密码也包括"
,下方示例为设置密码为yang37
执行该条mvn命令后,配置文件中的对应部分的信息会自动更改为:
好,到此这一小节目的达到了,你可以不用看这节剩下的内容.
1.3.1 扩展1: 变回去明文
如果你想要变回去原文,执行下面这个命令:
这时配置信息会打印在控制台,不会再次把配置文件给你改回去,你可以手动复制过去(打印的是配置文件全文).
1.3.2 扩展2: 咋感觉作者ENC、DEC写反了?
不要曲解作者的设计意图.
encrypt:加密
decrypt:解密
我认为设计者的意图是,ENC-密文,DEC-明文,代码写多了老下意识的认为DEC()这个是解密方法...还难受里面不是密文串,其实改成{}、[]之类的我比较好接受.
1.3.3 扩展3: mvn在哪执行
idea里面直接点这个.
1.3.4 手动计算密文
如果你闲的慌,不想用maven插件...你可以去掉那个pom的那个plugin,然后直接手动写代码计算加密值,参考代码.
上面的res就是你加密的结果,还需要你手动替换配置文件里面的对应的配置信息.
1.4 项目启动
解密总要密文串吧?你刚才是手动执行命令输入的密码,项目中的密码从哪来?
方案多种,反正目的就是为了让程序知道你的密码是啥,下面列举两种.
1.4.1 直接启动
1.4.2 利用环境变量
配置文件中编写下面的信息:
你肯定会疑惑,密码写这里我还加密干嘛...所以,我们要把密码换个地方存储.
这里我利用环境变量
,取的名字叫BOOT_PWD,这个可以自定义,不是规定值.
所以我把上面的配置改成这样:
$
1.4.2.1 Linux中
编辑当前用户的环境变量
末尾追加环境变量值
这个BOOT_PWD可以自己定义,不是规定值.
保存后刷新配置
可以用echo命令看看生效没
设置好环境变量后直接启动即可,不需要再带上面那个jasypt.encryptor.password参数.
1.4.2.2 win中
新建的时候变量值直接写密码就行,没有特殊格式.
编辑好了记得重启你的IDE
,新加的这个环境变量才会加载进来.
设置好环境变量后直接启动即可,不需要再带上面那个jasypt.encryptor.password参数.
1.5 验证
如果你放心解密有没有成功,可以在启动类打印下信息,我的demo代码.
__EOF__

本文链接:https://www.cnblogs.com/yang37/p/15547190.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具