对配置信息使用Jasypt进行加密
1.添加相关依赖
<!-- 加密工具 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
2.配置加密相关信息
可以在nacos里进行配置 也可以在yml进行配置
nacos配置
jasypt:
encryptor:
#加密秘钥
password: KWEJFBEKJW
# 必须与生成密码时使用的算法一致
algorithm: PBEWithMD5AndDES
# 初始化向量生成器
iv-generator-classname: org.jasypt.iv.RandomIvGenerator
# 安全提供者(JDK11+需要配置)
provider-name: SunJCE
# 密文前缀后缀(保持默认,默认是[])
property:
prefix: "ENC("
suffix: ")"
yml配置
#加密规则
jasypt.encryptor.algorithm=PBEWithMD5AndDES
#加密盐(可自定义)
jasypt.encryptor.password=KWEJFBEKJW
3. 可能遇到的问题 可能会导致下面这个配置失效(允许循环依赖配置)
#升级SpringBoot2.6.6,允许循环依赖
main:
allow-circular-references: true
如果真的导致这个配置失效了 可以在代码里进行循环依赖的配置 如下
package org.jeecg.config.jiami;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CircularDependencyConfig implements BeanFactoryPostProcessor {
/**
* 允许循环依赖配置 因配置了Jasypt加密 导致main.allow-circular-references: true失效
*
* @param beanFactory the bean factory used by the application context
* @throws BeansException
*/
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
((DefaultListableBeanFactory) beanFactory).setAllowCircularReferences(true);
}
}
4.对数据进行加密
@Resource
private StringEncryptor stringEncryptor;
@Test
public void encryptPwd() {
String user = stringEncryptor.encrypt("root123456");
System.err.println("user: ENC(" + user + ")");
String pass = stringEncryptor.encrypt("root123");
System.err.println("pass: ENC(" + pass + ")");
}
5. 更改配置文件信息为加密后的
spring.main.allow-circular-references=true
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=ENC(4CfFqSdW2mSWChwNcGs+cygctd7MrXJ6)
spring.datasource.password=ENC(rjNv+oLrsnxuparYAE4Y4M+smUqmLm60)
到这里就结束了 可以启动项目进行验证了