Python 使用M2Crypto加载DER编码的RSA密钥

Python 使用M2Crypto加载DER编码的RSA密钥,python,m2crypto,Python,M2crypto,方法M2Crypto.RSA.RSA().save\u key\u der()可用于以der格式保存密钥。但是,我没有看到像我所期望的那样有相应的方法M2Crypto.RSA.load\u key\u der() 有没有办法使用M2Crypto加载DER编码的RSA密钥?PEM格式是base64编码的DER数据,带有一些额外的页眉和页脚行。您可以将DER读取为二进制,将其转换为PEM并将其传递给RSA。加载密钥字符串: import base64 from M2Crypto import RSA

方法
M2Crypto.RSA.RSA().save\u key\u der()
可用于以der格式保存密钥。但是,我没有看到像我所期望的那样有相应的方法
M2Crypto.RSA.load\u key\u der()


有没有办法使用M2Crypto加载DER编码的RSA密钥?

PEM格式是base64编码的DER数据,带有一些额外的页眉和页脚行。您可以将DER读取为二进制,将其转换为PEM并将其传递给RSA。加载密钥字符串:

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>


对于后代来说,Python也有“ssl.DER_cert_to_PEM_cert()”和“ssl.PEM_cert_to_DER_cert()”这样做。@Dustin:但是DER_cert_to_PEM_cert将打印“CERTIFICATE”而不是“RSA私钥”,这将混淆M2Crypto。@DominiqueEav感谢分享。我不用它,所以我不知道这个。