如何使用 Python2 中的"cryptography"库从证书打印公钥?



我必须使用 Python2 中的加密库从 .pem 证书中提取公钥,但只能获取公钥对象。

在密码学文档中,我找到了这段代码

from cryptography.hazmat.primitives.asymmetric import rsa
pem_cert=open("/home/lab14/aes/fd.pem","rb").read()
cert = x509.load_pem_x509_certificate(pem_cert, default_backend())
public_key = cert.public_key()
print(public_key)

但是当运行这个时,我得到的是公钥对象,但没有十六进制格式的实际密钥。

这是我得到的输出

<cryptography.hazmat.backends.openssl.rsa._RSAPublicKey object at 0x7f49e214d6d8>

任何帮助都将有所帮助和赞赏。谢谢

你有一个公钥对象,需要对其进行编码以检索密钥的表示形式(以字节为单位(。然后可以使用任何十六进制编码器对这些字节进行编码 - 如果需要的话。

因此,只需调用public_bytes(encoding, format)即可检索字节。编码可以是SubjectPublicKeyInfo,其中包含有关公钥类型(它是通用密钥(的信息,也可以是PKCS1,基本上包含RSA公钥的最小编码。请注意,您可能必须先建立密钥类型,然后才能使用 PKCS1,因为这仅描述 RSA 密钥。

您还可以在 DER 和 PEM 格式之间进行选择。DER 仅返回 RSA 公钥的 ASN.1 定义结构的字节表示形式。PEM base 64 对该结构进行编码,并添加页眉和页脚行,以创建键的文本表示形式。

你并没有真正说出你想要打印什么或为什么。如果您只想打印 RSAPublicKey 的公共指数和模数,您可以执行以下操作:

public_key = cert.public_key()
print((public_key.public_numbers().e, public_key.public_numbers().n))

相关内容

  • 没有找到相关文章

最新更新