簡體   English   中英

如何使用Python2中的“加密”庫從證書中打印公鑰?

[英]How to print public key from certificates using “cryptography” library in Python2?

我必須使用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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM