【问题标题】:Generate kid for jwt from public key of signing key从签名密钥的公钥生成 jwt 的孩子
【发布时间】:2019-08-07 17:58:22
【问题描述】:

给定:

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

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

我的意图是:-

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

差不多是这样的:

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

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

【问题讨论】:

    标签: c# encryption jwt


    【解决方案1】:

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

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

    【讨论】:

    • 太好了,谢谢。您可以在答案中添加一些说明:“其他协议的密钥 ID”-“其他协议”是什么意思?另外,您能否参考任何描述您提供的方法的文档(我找不到)?否则,除非在接下来的几个小时内有任何进展,否则我会将其标记为已接受的答案。
    • PKCS#11 通常使用这个。我必须检查这是否只是常见用法,或者是否已经以这种方式定义......明天。
    猜你喜欢
    • 1970-01-01
    • 2017-10-15
    • 2021-01-26
    • 2022-08-06
    • 2023-03-22
    • 1970-01-01
    • 2020-02-12
    • 2018-01-09
    • 2019-05-09
    相关资源
    最近更新 更多