【问题标题】:Generate hash value of rsa public key生成 rsa 公钥的哈希值
【发布时间】:2023-12-06 03:08:02
【问题描述】:

出于 ebics 通信的目的,我需要生成 rsa 公钥的哈希值 (sha256)。我已经尝试了两种解决方案:phpSecLib 和 linux 命令 openssl(我在 phpSecLib 的帮助下生成的 public.pem 文件 - 我认为 public.pem 没问题,因为我尝试用我的密钥将模数和指数转换为 pem):

openssl pkey -in public.pem -pubin -pubout -outform DER | openssl dgst -sha256 -c

以上都没有给我正确的结果。我现在怎么办不好。银行向我发送他们的公钥和相应哈希值的模数和指数。 我也尝试过使用 ebics 文档中的密钥,但也没有成功。

银行密钥模数: 00f9d48dcb1a7d0cf09350c12fbc41fd1b212d1a49057bcbb404d1386da09d3ee1f1e25246608da8a826ad8f05bfdad6d447a471cefadd7202a01e5b6a1c7f4e93891d8d172a35c8667034a4dde709a3fca3070fc652ce97771778331e12e2d69ab406293cceb936d1d4bf41849b124d8739a37bfce039a833012f4795252161557b6e684ea377771f6c1c226a82772813819702756b0cea162c1c8a04105cc34018ca96fc025723d941752450643ae7f1452483f248907bc937a078f61377c7baf62f21fa368c5a9c45e69adc246a8ad0d2b880ccc4d7591d3b95f5f9f12c455540728afb9fed2276b2a1cffbe11c6af61bf494586c0b93f3ca1c235166de6c6d P>

银行密钥指数: 010001

正确的哈希值:

18 72 B2 39 FF 1C 68 5E 68 D8 DE D8 08 19 C0 4F 52 D8 70 E8 73 E7 56 89 99 99 4E 8C 23 45 32 1C

【问题讨论】:

    标签: openssl digital-signature public-key


    【解决方案1】:

    如果您打开 EBICS 规范,您将在第 5.5.1.1.1 节中看到下一个描述 “金融机构 X002 的公钥的 SHA-256 哈希值和 E002 是通过将指数与空白字符和 十六进制表示的模数(使用小写字母),不带前导 零(关于十六进制表示)。结果字符串必须是 转换为基于美国 ASCII 码的字节数组。”

    因此您可以打开任何在线 sha256 生成器并输入“10001 f9d48dc...e6c6d”并获取正确的哈希“1872..321C”

    【讨论】:

    • 没错。我偶然发现了它。它非常重要的一句话,很好地隐藏在文档中。我很高兴我完成了 ebics 实施,我不需要再次阅读此文档。
    【解决方案2】:

    好像没有标准。对于不同的密钥格式,它将是不同的哈希。在我的情况下(出于 ebics 目的)它的 sha256(ltrim($exponent, 0) . ' ' . $modulus);

    【讨论】: