使用C#中的算法RS512加密和解密JWT

时间:2016-06-01 09:47:22

标签: c# encryption jwt

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

我有

的私钥
private_modulus=8978158791.......(number only)
private_exponent=8487473636364..... (number only)

我在谷歌搜索但结果不明确,他们需要私钥和公钥,我没有,或者我不知道如何从上面生成。

使用Java完成,我尝试用C#。

2 个答案:

答案 0 :(得分:0)

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

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

它可以用于生成/验证JWT,并且可以使用各种算法。

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

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

答案 1 :(得分:0)

只需要私钥来解密JWE。对于加密,必须使用公钥。 如果您有私有RSA密钥,则可以通过删除所有私有素数和模数(即dpqdmp1轻松将其转换为公钥, dmq1iqmp)。

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

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