从签名密钥的公钥为jwt生成kid

时间:2019-03-17 01:55:30

标签: c# encryption jwt

给出:

  • 由RSACryptoServiceProvider生成的签名密钥。
  • 与孩子创建签名的jwt的要求。

如果签名密钥来自x509证书,那么我会将孩子设置为x5t。在这种情况下不是。我可以为孩子准备一些随心所欲的东西,但是最好是如果不太可能发生碰撞,并且孩子和证书之间存在有意义的联系。

我打算做的是--

  1. 创建一个字节数组,该数组通过将模量字节附加到指数字节来创建。
  2. SHA256对数组进行编码。
  3. 对SHA256使用Base64。
  4. 将kid设置为base64字符串。

差不多:

var kid = Base64(SHA256(concat(exp,mod)))

这似乎是一种有效的方法吗?有没有更简单的方法来从RSASecurityKey获取指纹?

1 个答案:

答案 0 :(得分:1)

通常,其他协议的密钥ID由模数上的哈希(通常为SHA-1)组成。密钥对的模数应该唯一,因此公钥和私钥也应唯一。它的优点是可以从私用公钥中计算出该密钥,同时也可以用于识别其中任何一个。

应使用最少的字节数将模数编码为大端无符号整数。