You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在其他项目中解密Spring Cloud Config Server加密属性?

在非Spring Cloud Config Server项目中解密加密属性

当然可以,Spring Cloud Config的加密/解密底层依赖Spring Security Crypto模块,你完全可以在其他项目中复用这套解密逻辑,不需要依赖Config Server的/crypto端点。以下是具体实现步骤:

1. 引入依赖

首先在你的项目中添加Spring Security Crypto的依赖,版本要和Config Server使用的版本保持一致:

Maven

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-crypto</artifactId>
    <version>对应Spring版本号</version>
</dependency>

Gradle

implementation 'org.springframework.security:spring-security-crypto:对应Spring版本号'

2. 构建解密器并解密

根据Config Server使用的加密方式(对称/非对称),构建对应的TextEncryptor实例即可解密。

情况1:对称加密(最常见,基于encrypt.key配置)

如果Config Server用的是对称加密(通过encrypt.key配置密钥),代码示例如下:

import org.springframework.security.crypto.encrypt.Encryptors;
import org.springframework.security.crypto.encrypt.TextEncryptor;

public class ConfigPropertyDecryptor {
    public static void main(String[] args) {
        // 替换为Config Server配置的encrypt.key值
        String secretKey = "你的加密密钥";
        // salt值要和Config Server一致,默认是"deadbeef",若Config Server自定义过需同步修改
        TextEncryptor decryptor = Encryptors.text(secretKey, "deadbeef");
        
        // 提取密文部分:去掉前缀"{chip}"(注意:通常Spring Cloud Config的前缀是"{cipher}",确认你的前缀是否正确)
        String encryptedContent = "asdasdasd";
        String decryptedValue = decryptor.decrypt(encryptedContent);
        
        System.out.println("解密结果:" + decryptedValue);
    }
}

情况2:非对称加密(基于密钥库)

如果Config Server使用密钥库(通过encrypt.key-store.*系列配置),则使用KeyStoreTextEncryptor:

import org.springframework.security.crypto.encrypt.KeyStoreTextEncryptor;

public class AsymmetricConfigDecryptor {
    public static void main(String[] args) {
        KeyStoreTextEncryptor decryptor = new KeyStoreTextEncryptor();
        // 对应Config Server的encrypt.key-store配置项
        decryptor.setKeyStoreLocation("classpath:your-keystore.jks");
        decryptor.setKeyStorePassword("密钥库密码");
        decryptor.setKeyAlias("密钥别名");
        decryptor.setKeyPassword("密钥密码");
        
        String encryptedContent = "asdasdasd"; // 去掉前缀"{chip}"或"{cipher}"
        String decryptedValue = decryptor.decrypt(encryptedContent);
        
        System.out.println("解密结果:" + decryptedValue);
    }
}

3. 关键注意事项

  • 版本一致性:确保Spring Security Crypto的版本和Config Server的版本匹配,避免因版本差异导致解密失败
  • 前缀处理:解密前必须去掉密文的前缀(比如你的{chip}或标准的{cipher}),只传入加密后的核心字符串
  • 密钥安全:绝对不要硬编码密钥到代码中,建议通过环境变量、密钥管理系统等方式安全注入
  • 自定义加密器:如果Config Server使用了自定义的TextEncryptor实现,你需要在自己的项目中复用完全相同的自定义逻辑

内容的提问来源于stack exchange,提问作者user8674189

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:35:18