您能否告诉我如何使用JWT和RS512 C#加密和解密数据。
我有
的私钥private_modulus=8978158791.......(number only)
private_exponent=8487473636364..... (number only)
我在谷歌搜索但结果不明确,他们需要私钥和公钥,我没有,或者我不知道如何从上面生成。
使用Java完成,我尝试用C#。
答案 0 :(得分:0)
我认为你不应该自己这样做。这太容易出错了。您可以使用Microsoft自己的现成库,例如:
https://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/
它可以用于生成/验证JWT,并且可以使用各种算法。
另一种选择是开源库,如果你比MS更喜欢它:
答案 1 :(得分:0)
只需要私钥来解密JWE。对于加密,必须使用公钥。
如果您有私有RSA密钥,则可以通过删除所有私有素数和模数(即d
,p
,q
,dmp1
轻松将其转换为公钥, dmq1
和iqmp
)。
RS512是一种签名算法,而不是加密算法。
您应该阅读RFC7518, section 4.1以找出可能的算法列表。
使用RSA密钥,您可以使用RSA1_5
,RSA-OAEP
或RSA-OAEP-256
算法。
列出了一些库here。不幸的是,似乎C#中没有处理JWE的开源库。 但是such library exists in PHP并且因为它是开源的,所以可以基于该工作创建C#实现。