【问题标题】:Encrypt and Decrypt JWT with algorithm RS512 in C#在 C# 中使用算法 RS512 加密和解密 JWT
【发布时间】:2016-09-30 14:43:27
【问题描述】:

您能否告诉我如何使用带有 RS512 C# 的 JWT 加密和解密数据。

我有私钥

private_modulus=8978158791.......(number only)
private_exponent=8487473636364..... (number only)

我在 Google 中搜索过,但结果不清楚,他们需要私钥和公钥,我没有或者我不知道如何从上面生成。

已经用 Java 完成了,我尝试用 C# 完成。

【问题讨论】:

  • 为什么是 RS512 而不是 PS512?

标签: c# encryption jwt


【解决方案1】:

我认为你不应该自己这样做。这太容易出错了。您可以使用微软自己的现成库,例如:

https://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/

它可以用于生成/验证JWT,据我所知可以使用各种算法。

如果您比 MS 更喜欢开源库,则另一种选择是:

https://github.com/jwt-dotnet/jwt

【讨论】:

  • 非常感谢这个帮助。我不知道如何使用提供的密钥。你能帮忙吗..
  • 这我不能 100% 确定你是怎么做到的。您应该更多地检查如何使用它,也许您需要将它们加入密钥或创建稍后由库使用的证书。因此,我将从检查您选择的库中的文档开始。
  • 我在 Google 中搜索过。我找不到使用它的方法。
  • 微软支持 RS512,你可以在这里查看他们的代码,例如:github.com/AzureAD/…
  • 我无法立即找到如何操作,因此您可能需要进行更多调查,但通常我认为您需要从原始 RSA 数字创建证书然后使用它作为 JwtToken 验证中的一种算法。
【解决方案2】:

仅需要私钥来解密 JWE。对于加密,必须使用公钥。 如果您有一个私有 RSA 密钥,您可以通过删除所有私有质数和模数(即 dpqdmp1dmq1iqmp)轻松地将其转换为公钥.

RS512 是一种签名算法,而不是加密算法。 您应该阅读RFC7518, section 4.1 以找出可能的算法列表。 使用 RSA 密钥,您可以使用 RSA1_5RSA-OAEPRSA-OAEP-256 算法。

列出了一些库here。不幸的是,在 C# 中似乎没有处理 JWE 的开源库。 但是such library exists in PHP 并且由于它是开源的,因此可以基于该工作创建 C# 实现。

【讨论】:

  • 这给了我更多的理解。我有两个键,一个是模数和指数。所以我该怎么做?如何用这两个私有大整数签署 JWT?谢谢。
猜你喜欢
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
相关资源
最近更新 更多