nacos配置敏感数据加密简单使用jasypt(亲测有效)

1.相关依赖

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>

2.配置到properties文件或者yml文件上

#自定义 加密因子
jasypt.encryptor.password = ALK9382LDF234UIJ79GJ0F
#官方默认的加密算法是 PBEWITHHMACSHA512ANDAES_256 但是如果用的是jdk1.8 不支持,需要改成 PBEWithMD5AndDES
jasypt.encryptor.algorithm = PBEWITHHMACSHA512ANDAES_256
# 配置格式(不写默认ENC)前后缀
jasypt.encryptor.property.prefix= ENC[
jasypt.encryptor.property.suffix= ]
jasypt:
  encryptor:
    #自定义 加密因子。随便写
    password: ALK9382LDF234UIJ79GJ0F5HD
    # 官方默认的加密算法是 PBEWITHHMACSHA512ANDAES_256 但是如果用的是jdk1.8 不支持需要改成 PBEWithMD5AndDES
    algorithm: PBEWithMD5AndDES
    # 配置格式(不写默认ENC)
    property:
      prefix: ENC[
      suffix: ]

3.测试,获取加密后的密码

4.配置到nacos上properties文件形式,也可以yml文件上只是格式换成yml格式,

5.服务启动类上添加@EnableEncryptableProperties

@EnableEncryptableProperties
@SpringBootApplication
public class TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(BusinessApplication.class, args);    }
}

### jasypt-spring与Nacos配置中心集成方法 #### 添加依赖项 为了使 Spring Boot 应用程序能够利用 NacosJasypt 进行加密解密操作,在 `pom.xml` 文件中需引入必要的依赖: ```xml <dependencies> <!-- Nacos Config Starter --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!-- Jasypt Starter for Encryption and Decryption --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.5</version> </dependency> </dependencies> ``` 此部分描述了如何在 Maven 项目中添加所需的库来支持功能[^3]。 #### 配置application.properties 或 application.yml 接下来,设置应用程序属性文件以连接到 Nacos 并启用 Jasypt 加密特性。对于 YAML 格式的配置如下所示: ```yaml server: port: ${SERVER_PORT} spring: cloud: nacos: config: server-addr: localhost:8848 # Nacos Server 地址 file-extension: yaml # 使用YAML格式作为扩展名 group: DEFAULT_GROUP encrypt: key: mySecretKey # 设置用于加密/解密的秘密钥 ``` 上述配置指定了 Nacos 的服务器地址以及所使用配置文件类型,并启用了 Jasypt 所必需的安全参数[^1]。 #### 创建自定义Bean 来处理加密字符串 有时可能希望更灵活地控制哪些数据应该被自动解码或编码;为此可以创建一个 Bean 实现 `PropertySourceFactory` 接口并重写其方法: ```java import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @EnableEncryptableProperties public class AppConfig { @Bean(name = "config decryptor") public PropertySourceFactory propertySourceFactory() { return new EncryptablePropertySourceFactory(); } } ``` 这段代码展示了怎样注册一个新的工厂bean以便于管理来自外部源(比如 Nacos) 中经过保护的信息[^2]。 #### 试案例展示实际效果 最后一步是在控制器或其他组件内编写简单的逻辑验证一切正常工作。下面是一个 RESTful API 示例,它返回存储在远程配置仓库里的敏感信息(已事先进行了加密): ```java @RestController @RequestMapping("/api/v1/settings") public class SettingsController { private final Environment environment; public SettingsController(Environment env){ this.environment=env; } @GetMapping("/db-password") public String getDbPassword(){ return environment.getProperty("spring.datasource.password"); } } ``` 当访问 `/api/v1/settings/db-password` 路径时,如果一切都按照预期运行,则会看到明文形式下的数据库密码而不是原始的加密版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值