首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JWE解密不适用于jose jwt

JWE解密不适用于jose jwt
EN

Stack Overflow用户
提问于 2019-11-19 14:26:27
回答 1查看 817关注 0票数 0

我在C#上使用Jose-Jwt许可证,我有以下代码:*.

代码语言:javascript
复制
private string DecodeJWT(string token)
{
    string privateKeyPath = ConfigurationManager.AppSettings["PrivateKey"];
    var privateRSA = RsaProviderFromPrivateKeyInPemFile(privateKeyPath);           
    string json = Jose.JWT.Decode(token,privateRSA, Jose.JweAlgorithm.RSA_OAEP, Jose.JweEncryption.A256GCM);
    return json;
}


private RSACryptoServiceProvider RsaProviderFromPrivateKeyInPemFile(string privateKeyPath)
{
     using (TextReader privateKeyTextReader = new StringReader(System.IO.File.ReadAllText(privateKeyPath)))
     {
         PemReader pr = new PemReader(privateKeyTextReader);
         RSAParameters rsaParams = DotNetUtilities.ToRSAParameters((RsaPrivateCrtKeyParameters)pr.ReadObject());
         RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
         csp.ImportParameters(rsaParams);
         return csp;
     }
}

然而,我没有设法解密加密的字符串。解码后返回相同的加密串。有人能告诉我我可能做错了什么吗?我实际上是在遵循这个Q/A的建议

它似乎对我不起作用。:(

EN

回答 1

Stack Overflow用户

发布于 2019-11-20 15:18:01

我发现解码实际上是有效的。但我需要使用公钥进一步解密数据。

RSACryptoServiceProvider publicRSA = RsaProviderFromPublicKeyInPemFile(publicKeyPath);

代码语言:javascript
复制
        var validationParameters = new TokenValidationParameters()
        {
            RequireExpirationTime = false,
            RequireSignedTokens = true,
            ValidateAudience = false,
            ValidateIssuer = false,
            IssuerSigningKey = new RsaSecurityKey(publicRSA)
        };

        IdentityModelEventSource.ShowPII = true;
        var result = handler.ValidateToken(decryptedresult, validationParameters, out var validatedToken);

但是系统抛出{"IDX10501:签名验证失败。无法匹配密钥:\nkid:捕获的'C6Q-0bsHc4qyNq6MBEtftpB-DsTHNth4ZnlrFPUQ8PI'.\nExceptions:\n '‘。\n标记:{"IDX10501:签名验证失败。无法匹配密钥:\nkid:捕获的'C6Q-0bsHc4qyNq6MBEtftpB-DsTHNth4ZnlrFPUQ8PI'.\nExceptions:\n '‘。\n内标识:'{\"alg\":\"RS256\",\"kid\":\"C6Q-0bsHc4qyNq6MBEtftpB-DsTHNth4ZnlrFPUQ8PI\"}.{\"uinfin\":{\"lastupdated\":\"2019-11-13\",\“源\”:\“1\”,\“分类\”:\“C\”,\“值\”:\“S9812381D\”}....

但是,我可以在错误消息中看到有效负载已解密。我被困在如何处理这个无法匹配的键错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58927863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档