SpringBoot配置默认情况下是明文显示,安全性就比较低一些。jasypt该插件可以对配置文件进行加密, 提高配置的安全性
插件引入
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
组件说明
使用组件原生API进行加解密,说明: 每次编码生成的编码结果串都会不一样, 均可以逆向解析.
编解码示例
/**
* 编码
* @param keyt 秘钥
* @param source 原始数据
* @return 这里每次加密后的密文结果都不一样
*/
public static String encrypt(String keyt, String source){
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword(keyt);
// 默认算法为"PBEWithMD5AndDES"
encryptor.setAlgorithm("PBEWithMD5AndDES");
return encryptor.encrypt(source);
}
/**
* 解码
* @param keyt 秘钥
* @param source ji
* @return
*/
public static String decrypt(String keyt, String source){
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword(keyt);
// 默认算法为"PBEWithMD5AndDES"
encryptor.setAlgorithm("PBEWithMD5AndDES");
return encryptor.decrypt(source);
}
测试编解码
public static void main(String[] args) {
// 秘钥
String kept = "123456A";
String source = "配置加解密";
String target = encrypt(kept, source);
System.out.println("目标数据:" + source + " \n加密结果:" + target + " \n解密结果:" + decrypt(kept, target));
}
输出结果
目标数据:配置加解密
加密结果:5eZ9Jf/7A75hdoVMhuqcufSFKE/GiVyp
解密结果:配置加解密
SpringBoot中应用
引入插件依赖, 然后在配置文件中做如下简易配置.
密钥配置
配置秘钥,该步必须配置,该密钥用来对配置文件进行加解密, 对应上述示例中的kept(密钥参数)
# 加密密码
jasypt.encryptor.password=1234ABCD
密文串配置
jasypt是通过识别配置文件中的ENC()
标签来进行密文解密的,所以我们需要将受保护的配置做如下配置修改.
# 使用ENC()标签配置密文串
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ENC(9JXD/P35350dt+R3479d6uZQ==)?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
spring.datasource.username=ENC(t+xp3NnBBFmcAePD459==)
spring.datasource.password=ENC(A0nQxK1oPaNnBBBFmcgoTI+FFnNnBB+sdEQmUg=)
网友评论