【发布时间】:2021-02-20 07:11:50
【问题描述】:
使用此命令可以生成 RSA 公钥-私钥对:
ssh-keygen -f key
现在我想使用模块 cryptography 在 Python 中加载这些键。示例:
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
with open("key.pub", "rb") as f:
datapub = f.read()
public_key = serialization.load_ssh_public_key(datapub, backend=default_backend())
但是现在:如何从这个公钥生成指纹?使用 OpenSSH,这可以使用 ssh-keygen -lf key.pub 来完成。但是你在 Python 中是怎么做到的呢?
【问题讨论】:
-
AFAIK 没有指纹与
RSAPublicKey实例相关联,例如public_key。指纹是在格式的上下文中定义的,例如OpenSSH。这里的fingerprint 是 Base64 解码公钥的 SHA256 哈希。一种确定方法是将RSAPublicKey实例序列化为 OpenSSH 格式,例如使用public_key.public_bytes(...)(对于发布的示例,这当然会导致datapub)并确定相应的哈希值,例如with(但使用 SHA256)。
标签: python-3.x rsa rsa-key-fingerprint