运伟大之思者,必行伟大之迷途。|

sarom

园龄:2年1个月粉丝:0关注:0

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 中国大陆许可协议进行许可。

posted @   sarom  阅读(121)  评论(0编辑  收藏  举报
(评论功能已被禁用)
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起