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

如何手动解密由指定代码生成的加密JWT Token?

手动解密加密JWT Token的方法

你的代码生成的是**JWE(JSON Web Encryption)**格式的加密Token,而非仅签名的普通JWT。要手动解密,需使用与加密时完全一致的密钥、编码方式和算法,以下是具体实现步骤:

核心前提

  • 必须持有加密时使用的Jwt:DecryptionKey和Jwt:Key(分别用于解密操作和验证签名)
  • 密钥编码需严格匹配:解密密钥用Encoding.Default,签名密钥用Encoding.UTF8
  • 算法需完全对齐:密钥包装算法Aes256KW、内容加密算法Aes256CbcHmacSha512、签名算法HmacSha256

C#解密代码示例

using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Text;

public string DecryptJweToken(string encryptedToken, IConfiguration _config)
{
    // 1. 构建解密凭证(与加密逻辑完全一致)
    var decryptingKey = new SymmetricSecurityKey(Encoding.Default.GetBytes(_config["Jwt:DecryptionKey"]));
    var decryptingCredentials = new EncryptingCredentials(
        decryptingKey,
        SecurityAlgorithms.Aes256KW,
        SecurityAlgorithms.Aes256CbcHmacSha512);

    // 2. 构建签名验证密钥
    var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));

    // 3. 配置Token验证参数
    var validationParams = new TokenValidationParameters
    {
        ValidIssuer = _config["Jwt:Issuer"],
        ValidAudience = _config["Jwt:Audience"],
        IssuerSigningKey = signingKey,
        TokenDecryptionKey = decryptingKey,
        ValidateLifetime = true // 可选:验证Token是否过期
    };

    // 4. 解密并验证Token合法性
    var handler = new JwtSecurityTokenHandler();
    SecurityToken decryptedToken;
    handler.ValidateToken(encryptedToken, validationParams, out decryptedToken);

    // 5. 获取解密后的完整Token或声明信息
    var jwtToken = decryptedToken as JwtSecurityToken;
    return jwtToken?.ToString(); // 可直接访问jwtToken.Claims获取具体声明
}

关键说明

  • ValidateToken方法会自动完成解密→签名校验→有效期验证的全流程,确保Token未被篡改且合法有效
  • 若仅需解密(跳过验证),可调整TokenValidationParameters中的验证开关(如ValidateIssuer = false),但生产环境不建议这么做
  • Encoding.Default依赖系统默认编码,跨平台部署时建议改为固定编码(如UTF8)避免编码不一致导致的解密失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:21:22