Jasypt加密(手把手教会,防踩雷版)

对配置信息使用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)

到这里就结束了  可以启动项目进行验证了 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值