【问题标题】:Loading a DER-encoded RSA key using M2Crypto使用 M2Crypto 加载 DER 编码的 RSA 密钥
【发布时间】:2011-04-23 15:08:42
【问题描述】:

M2Crypto.RSA.RSA().save_key_der() 方法可用于以 DER 格式保存密钥。但是,我没有看到对应的方法M2Crypto.RSA.load_key_der(),正如我所期望的那样。

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

【问题讨论】:

    标签: python m2crypto


    【解决方案1】:

    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>
    

    【讨论】:

    • 为了后代,Python 也有 "ssl.DER_cert_to_PEM_cert()" 和 "ssl.PEM_cert_to_DER_cert()" 来做这件事。
    • @Dustin:但 DER_cert_to_PEM_cert 将打印“CERTIFICATE”而不是“RSA PRIVATE KEY”,这会混淆 M2Crypto。
    • @DominiqueEav 感谢分享。我不使用它,所以我不知道这个。
    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 2017-04-16
    • 2015-05-08
    • 2016-01-26
    • 2013-03-30
    • 2012-05-09
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多