![](/img/trans.png)
[英]How can we retrieve public key from private key ( protected with passphrase ) using python's Cryptography library?
[英]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.