【问题标题】:How to extract RSA public exponent using python M2Crypto如何使用 python M2Crypto 提取 RSA 公共指数
【发布时间】:2015-06-15 18:20:11
【问题描述】:

我有以下提取主机叶证书和证书 RSA 公钥的代码:

c = ssock.getpeercert(True)
x509 = M2Crypto.X509.load_cert_der_string(c)
publickey=x509.get_pubkey()
m=publickey.get_modulus()

我试图找到提取 RSA 密钥的公共指数的函数,但我找不到任何函数。您能帮我弄清楚如何提取 RSA 公钥的公共指数吗?

编辑:如果 M2Crypt 不可能的话。请指出任何其他方式。

编辑 2:当我尝试将证书加载为 DER 时:

key = RSA.importKey(publickey.as_der())

我收到了这个错误:

('file() 参数 1 必须是没有 NULL 字节的编码字符串,而不是 str',)

我想避免将证书保存在本地系统中。我只是想提取模数和指数等信息。 我从错误中了解到的是 importKey 函数将参数作为 DER 文件而不是字符串。您能帮我找到解决方法吗?

【问题讨论】:

    标签: python ssl x509certificate m2crypto


    【解决方案1】:

    这段代码应该给你模数和公共指数:

    import Crypto.PublicKey.RSA
    
    c = ssock.getpeercert(True)
    x509 = M2Crypto.X509.load_cert_der_string(c)
    publickey = x509.get_pubkey()
    key = Crypto.PublicKey.RSA.importKey(publickey.as_der())
    
    modulus = key.n
    public_exponent = key.e
    

    【讨论】:

    • 我不想要模数,因为我已经从 mod=pk.get_modulus() 得到它我想要通常命名为 e 的公共指数。
    • 提取n 对我来说也不起作用。你确定我把c 发给importKey 吗??
    • 我起初误读了这个问题并假设了一些事情。请查看代码的编辑版本。
    • 请检查 EDIT 2。谢谢。
    • 我不确定file() 错误的根源是什么。我用于测试的代码是hastebin.com/xajezajeyo.hs,它似乎在我的系统上工作正常。
    猜你喜欢
    • 1970-01-01
    • 2018-01-16
    • 2014-04-16
    • 1970-01-01
    • 2018-06-10
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多