2011-04-23 57 views

回答

10

PEM格式是帶有一些額外的頁眉和頁腳行的base64編碼DER數據。你可以只是讀DER二進制,將其轉換爲PEM並傳遞到RSA.load_key_string

import base64 
from M2Crypto import RSA 

TEMPLATE = """ 
-----BEGIN RSA PRIVATE KEY----- 
%s 
-----END RSA PRIVATE KEY----- 
""" 
raw = open('key.der', 'rb').read() 
data = TEMPLATE % base64.encodestring(raw).rstrip() 
key = RSA.load_key_string(data) 
print key 

輸出:

<M2Crypto.RSA.RSA instance at 0x10eb710> 
+2

對於後人,Python中也有 「ssl.DER_cert_to_PEM_cert()」 和「SSL。 PEM_cert_to_DER_cert()「來做到這一點。 – 2014-02-18 02:47:47

+0

@Dustin:但DER_cert_to_PEM_cert將打印「CERTIFICATE」而不是「RSA PRIVATE KEY」,這會混淆M2Crypto。 – 2014-06-26 08:45:29

+0

@DominiqueEav感謝您的分享。我不使用它,所以我不知道這一點。 – 2014-06-26 20:02:25