cloud +nacos——密码加解密

前提

JDK:1.8 
spring-cloud-starter-bootstrap:3.1.5 
boot:2.7.6

加解密nacos配置文件密码项

1.添加jasypt依赖

 <dependency>
    <groupId>com.github.ulisesbocchio</groupId>
     <artifactId>jasypt-spring-boot</artifactId>
     <version>3.0.5</version>
 </dependency>

2.使用工具类生成密码

public class JasyptUtil {

    /**
     * Jasypt生成加密结果
     *
     * @param salt 配置文件中设定的加密密码 (盐)jasypt.encryptor.password
     * @param source    待加密值
     * @return
     */
    public static String encryptPwd(String salt, String source) {
        PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
        encryptOr.setConfig(cryptOr(salt));
        return encryptOr.encrypt(source);
    }

    /**
     * 解密
     *
     * @param password 配置文件中设定的加密密码(盐) jasypt.encryptor.password
     * @param password    待解密密文
     * @return
     */
    public static String decryptPwd(String salt, String password) {
        PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
        encryptOr.setConfig(cryptOr(salt));
        return encryptOr.decrypt(password);
    }
	/**
     * 默认配置,可以根据启动项目时日志看到默认的项
     * @param password
     * @return
     */
    public static SimpleStringPBEConfig cryptOr(String password) {
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(password);
        config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setProviderName(null);
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
        config.setStringOutputType("base64");
        return config;
    }

}

加解密nacos连接密码

重写NacosConfigProperties读取密码


import com.alibaba.cloud.nacos.NacosConfigProperties;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.context.properties.ConfigurationProperties;
import javax.annotation.PostConstruct;

@ConfigurationProperties(NacosConfigProperties.PREFIX)
public class CustomNacosConfigProperties extends NacosConfigProperties {

    @Override
    @PostConstruct
    public void init() {
        super.init();
        if (!StringUtils.isEmpty(this.getPassword())) {
            String salt = this.getEnvironment().resolveRequiredPlaceholders("${jasypt.encryptor.password:}");
            this.setPassword(JasyptUtil.decyptPwd(salt,this.getPassword()));
        }
    }

}


import com.alibaba.cloud.nacos.NacosConfigProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CustomNacosBootstrapAutoConfig {

    @Bean
    public NacosConfigProperties nacosConfigProperties() {
        return new CustomNacosConfigProperties();
    }

}

重写NacosDiscoveryProperties读取密码


import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.env.Environment;

@ConfigurationProperties(NacosDiscoveryProperties.PREFIX)
public class CustomNacosDiscoveryProperties extends NacosDiscoveryProperties {


    @Override
    public void overrideFromEnv(Environment env) {
        super.overrideFromEnv(env);
        String salt = env.resolveRequiredPlaceholders("${jasypt.encryptor.password:}");
        this.setPassword(JasyptUtil.decyptPwd(salt,this.getPassword()));
    }
}


import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CustomNacosConfiguration {

    @Bean
    public NacosDiscoveryProperties nacosDiscoveryProperties() {
        return new CustomNacosDiscoveryProperties();
    }
}

添加文件

在这里插入图片描述
注意对应CustomNacosBootstrapAutoConfig的包名

org.springframework.cloud.bootstrap.BootstrapConfiguration=xx.xx.xx.CustomNacosBootstrapAutoConfig
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值