Spring Boot 配置信息加密
在配置文件中,难免会遇到一些需要密码的配置项,比如MySQL、Redis等,然而通常情况下它们都是直接明文存储在配置文件中,并且配置文件不会和其他代码一起打包,存在一定的隐患,因此最好对其进行加密处理。
一、添加依赖
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.4</version> </dependency> <dependency> <groupId>org.jasypt</groupId> <artifactId>jasypt</artifactId> <version>1.9.3</version> </dependency>
二、加密
在maven仓库下找到org\jasypt\jasypt\1.9.3
,在命令行中进入此目录,执行如下命令:
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="明文" password=密钥 algorithm=PBEWithMD5AndDES
其中明文就是原本的密码,密钥可以随意取,algorithm是加密的方式,PBEWithMD5AndDES是默认值。最后将原本配置文件中的密码改为ENC(密文)
即可。
三、配置
创建一个Java配置类文件,内容如下:
import org.jasypt.encryption.StringEncryptor; import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class EncryptorConfig { @Bean("jasyptStringEncryptor") public StringEncryptor jasyptStringEncryptor() { PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); SimpleStringPBEConfig config = new SimpleStringPBEConfig(); config.setPassword("密钥"); config.setAlgorithm("PBEWithMD5AndDES"); config.setPoolSize("1"); encryptor.setConfig(config); return encryptor; } }
第三步其实可以直接写在配置文件里,但那样会暴露密钥和加密方式,因此选择编写配置文件的方式,如此一来它将随其他文件一起打包,在一定程度上规避了风险。
本文作者:sarom
本文链接:https://www.cnblogs.com/huijieyao/p/17062726.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步