为什么我的私钥的 RSA 指纹与我的公钥相同?

The*_*ter 7 ssh

这两个是相同的。为什么?我认为 RSA 指纹是哈希函数的输出,这意味着两个不同的输入(私钥和公钥)应该产生两个不同的输出。

user$ ssh-keygen -lf ~/.ssh/id_rsa
2048 SHA256:zZ2qBu6JGxlTWnLUUDU4UFl8uzLPCoi8ze1BPII/Uhc etc etc

user$ ssh-keygen -lf ~/.ssh/id_rsa.pub 
2048 SHA256:zZ2qBu6JGxlTWnLUUDU4UFl8uzLPCoi8ze1BPII/Uhc etc etc
Run Code Online (Sandbox Code Playgroud)

use*_*686 6

指纹被计算为散列,但它不是通过盲目散列输入文件 \xe2\x80\x93 来计算的,协议通常准确指定要散列密钥的哪些部分以及以什么顺序。(这在协议之间可能有所不同:SSHv2 公钥将具有与 PEM 公钥不同的指纹,即使它们包含完全相同的 RSA 参数。)

\n\n

通常的规则是指纹始终仅基于对公共部分进行散列;这样更有用。由于公钥始终可以从私钥文件(实际上包含所有参数,公钥和私钥)派生出来,这意味着您将始终计算出正确的指纹类型。

\n\n

例如,如果第一个命令显示了不同类型的指纹(只有您可以计算的指纹),那么与在服务器上安装密钥的系统管理员等共享是完全没有用的。这同样适用于 X.509 和 PGP \xe2\x80\x93 中的指纹,它们的主要目的成为要共享的短字符串。

\n