【问题标题】:determining hash function used in digital signature确定数字签名中使用的哈希函数
【发布时间】:2013-04-13 16:15:27
【问题描述】:

我有一个数字签名 (RSA - PKCS#1)。使用 RSA 公钥解密后,我得到以下 128 个字节

00 01 ff ff ff .. ff 00 30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 77 51 1b f4 d7 17 d7 ad 8c 2d e5 89 2a ca e0 6d a3 c0 7d 13 4d d7 b8 01 14 87 03 00 69 e4 9b b3

PKCS#1 填充已移除,剩余 51 个字节:

30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 77 51 1b f4 d7 17 d7 ad 8c 2d e5 89 2a ca e0 6d a3 c0 7d 13 4d d7 b8 01 14 87 03 00 69 e4 9b b3

我想要两件事:

  1. 是否可以确定使用的哈希函数?编码算法 ID 应该添加到摘要的实际正文中,是否可以从原始字节中判断它是什么算法?

  2. 实际摘要从哪里开始(标题/摘要有多长)?

【问题讨论】:

    标签: hash rsa pkcs#1


    【解决方案1】:

    这似乎是 RFC 3447 中描述的 EMSA-PKCS1-v1_5,这意味着在删除标头和填充后,您有一个 AlgorithmIdentifier 的 DER 编码,后跟哈希值本身。

    来自 RFC:

    1. 对于附录 B.1 中提到的六个哈希函数,DER DigestInfo 值的编码 T 等于以下内容:

      [...]

      SHA-256:(0x)30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 || H.

    因此,在您的示例中,哈希值是从 77511bf4d7... 开始的 SHA-256 哈希。

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 2017-04-25
      • 2014-12-10
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      • 2010-11-19
      • 2014-08-17
      • 2012-05-09
      相关资源
      最近更新 更多