首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python2中的“密码学”库打印证书的公钥?

如何使用Python2中的“密码学”库打印证书的公钥?
EN

Stack Overflow用户
提问于 2019-06-17 17:02:58
回答 2查看 2K关注 0票数 2

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

在密码学文档中,我找到了以下代码

代码语言:javascript
复制
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)

但是当运行这段代码时,我得到的是公钥对象,而不是十六进制格式的实际密钥。

下面是我得到的输出

代码语言:javascript
复制
<cryptography.hazmat.backends.openssl.rsa._RSAPublicKey object at 0x7f49e214d6d8>

任何帮助都将是有益的和感激的。谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-06-17 19:26:19

您已经有了一个公钥对象,需要对其进行编码以检索密钥的字节表示。然后,可以使用任何十六进制编码器对这些字节进行编码-如果需要的话。

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

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

票数 1
EN

Stack Overflow用户

发布于 2019-06-17 19:50:12

你并没有说出你想要打印什么或者为什么要打印。如果您只想打印RSAPublicKey的公共指数和模数,您可以这样做:

代码语言:javascript
复制
public_key = cert.public_key()
print((public_key.public_numbers().e, public_key.public_numbers().n))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56628058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档