开发者

nacos配置ENC(...)加密实现方式

目录
  • nacos配置ENC(...)加密方式
    • 1.添加依赖
    • 2.配置 jasypt 密钥
    • 3.定义自定义 jasyptStringEncryptor
    • 4.加密和解密示例
    • 5.验证日志
    • 6.手动调用解密(可选)
  • 总结

    nacos配置ENC(...)加密方式

    如:

    spring.datasource.password=ENC(xxxx)

    在 Spring Boot 项目中,Jasypt 是一个常用的加密和解密工具,用于安全地管理敏感信息(例如数据库密码)。

    从日志来看,jasypt 初始化了默认的加密器 Default String Encryptor,但您想自定义 jasyptStringEncryptor 解密逻辑。

    以下是实现步骤:

    1.添加依赖

    确保在 pom.XML 或 build.gradle 中包含 Jasypt 的依赖:

    <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>3.0.5</version> <!-- 替换为合适版本 -->
    </dependency>
    

    2.配置 jasypjavascriptt 密钥

    在 application.properties 或 application.yml 文件中配置加密密钥:

    jasypt.encryptor.password=your-encryption-password
    

    注意: your-encryption-password 是用于加密和解密的密钥,建议不要硬编码,可通过环境变量注入。

    3.定义自定义 jasyptStringEncryptor

    您可以在配置类中自定义一个 StringEncryptor Bean:

    import org.jasypt.encryption.StringEncryptor;
    import org.jasypt.encrjsyption.pbe.PooledPBEStringEncryptor;
    import org.jasypt.salt.RandomSaltGenerator;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class JasyptConfig {
    
        @Bean(name = "jasyptStringEncryptor")
        public StringEncryptor stringEncryptor() {
            PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
            enphpcryptor.setPoolSize(4); // 设置线程池大小
            encryptor.setPassword("your-encryption-password"); // 配置密钥
            encryptor.setAlgorithm("PBEWithMD5AndDES"); // 加密算法
            encryptor.setSaltGenerator(new RandomSaltGenerator());
            return encryptophpr;
        }
    }
    

    4.加密和解密示例

    加密:

    使用 Jasypt 工具对敏感数据加密:

    # 示例加密命令
    Java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI \
      input="your-secret-password" \
      password="your-encryption-password" \
      algorithm="PBEWithMD5AndDES"
    

    输出: ENC(your-encrypted-string),将其用于配置文件。

    解密:

    当配置文件中包含加密数据(例如数据库密码)时:

    spring.datasource.password=ENC(your-encrypted-string)

    jasyptStringEncryptor 会自动解密。

    5.验证日志

    启动项目,日志中应该显示 jasyptStringEncryptor 已被使用:

    INFO c.u.jasyptspringboot.encryptor.CustomStringEncryptor - String Encryptor custom Bean found with name ‘jasyptStringEncryptor’.

    6.手动调用解密(可选)

    如果需要在代码中手动解密:

    import org.jasypt.encryption.StringEncryptor;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    publijsc class DecryptionService {
        @Autowired
        private StringEncryptor stringEncryptor;
    
        public String decrypt(String encryptedText) {
            return stringEncryptor.decrypt(encryptedText);
        }
    }
    

    注意事项:

    1. 密钥安全性:不要将密钥硬编码到代码中,建议使用环境变量或密钥管理工具。

    2. 日志安全性:不要在日志中打印明文数据。

    3. 加密算法:根据需求选择更强的加密算法(如 AES)。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜