这个网站计算的公钥指纹是不是有问题?

286 天前
 FaiChou

网站是这个: https://8gwifi.org/PemParserFunctions.jsp

测试公钥:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxQsGcWyJ6EucBfFcAaGk
1sL8zUf0z7cy/+mwDUao97ctJiKUdViVFTx42ZMvw2MKh7XC3cyu/PbCBLQ7y2NQ
t5aRIFI/LW0wFsoUateSsUKaDRBys7DnyBrVCUFr8pN71bmHWjbYfW9iG72vqHKb
iUHpixQNyNGv7HCYAEpjOHdj+vMSHC2vISH2+ui53he8IFqiolOlD6JCaSZECkB0
Q+IYEtYRMBLcT8OiPOvQfBJijwMCbkxgocFNq4nby30tG4NyLyXBtMihn/6lDksP
KL7dLwFOF1bj/9hveAugSTE5xDE001/69oFwmx3CmDHwGqoLqmUTwwnvFwRSf3Ku
8QIDAQAB
-----END PUBLIC KEY-----

8gwifi 这个网站给出的结果是:

Algo RSA
Format X.509
 ASN1 Dump
RSA Public Key [f6:05:87:84:22:36:d9:c2:ed:4d:b2:7b:d3:90:c2:c6:72:71:af:7d]
            modulus: 
            ...

它给出的公钥指纹长度是 20 字节,应该是 sha1 哈希函数。

将这个公钥获取其 hex 值:

30819f300d06092a864886f70d010101050003818d00308189028181008686980c0f5a24c4b9d43020cd2c22703ff3f450756529058b1cf88f09b8602136477198a6e2683149659bd122c33592fdb5ad47944ad1ea4d36c6b172aad6338c3bb6ac6227502d010993ac967d1aef00f0c8e038de2e4d3bc2ec368af2e9f10a6f1eda4f7262f136420c07c331b871bf139f74f3010e3c4fe57df3afb716830203010001

然后使用 https://emn178.github.io/online-tools/sha1.html 进行计算,得出的结果是:

1c59aeb6032e94a534dbb3303e7085e4a7637ed5

在本地使用 openssl 命令又得出另外的结果:

$ openssl rsa -pubin -in public_key.pem -outform DER | openssl sha1 -c
SHA1(public_key.der)= b1:c1:0e:ae:36:56:81:e9:52:d2:76:77:26:0e:a8:1b:d8:84:22:ff

所以到底哪个结果是正确的?已经反复验证过输入是一样的公钥。

1302 次点击
所在节点    程序员
4 条回复
Leon406
286 天前
不同工具指纹算法不一样, 网站是 ssh
参考 https://stackoverflow.com/questions/51059782/how-to-calculate-fingerprint-from-ssh-rsa-public-key-in-java

实现了算法 fingerprint
Leon406
286 天前
@Leon406 #1 只看了第一位,好也不对
FaiChou
285 天前
@Leon406 好无语,每个方法都是不同的答案。本来也不在乎这个指纹,只是好奇它怎么计算的。自己验证了下,怎么都不对。
Leon406
285 天前
通过 https://8gwifi.org 网站源码 ,找到加密库,最终找到指纹算法
用的旧版的 bouncycastle 库
公钥 modulus + publicExponent 进行 sha512/160 算法得到


最新版算法已改为 SHAKE-256 取前 160 位

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/961589

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX