【问题标题】:Alternative to M2Crypto's EVP in Python 3Python 3 中 M2Crypto 的 EVP 的替代方案
【发布时间】:2015-11-27 18:18:44
【问题描述】:

我正在拼命地尝试将一个旧项目升级到 Python 3,但我在 3 年多前编写的库之一使用了在 Py3k 下似乎不可用的 M2Crypto。它几乎不能安装在 Python 2 上,但完全是另外一回事。

无论如何,我们只用它的 EVP 模块对字符串进行签名。以下是我们使用 M2Crypto 的程度:

from M2Crypto import EVP

def sign_string(message, priv_key_string):
    key = EVP.load_key_string(priv_key_string)
    key.reset_context(md='sha1')
    key.sign_init()
    key.sign_update(message)
    return key.sign_final()

从字符串加载密钥,使用 SHA1 并对提供的消息进行签名。表面上看起来很简单,但我真的不知道发生了什么。 EVP 对我来说是一个黑盒子。

是否还有其他适用于 Python 3 的 EVP 库?或者有人知道让 M2Crypto 在 Python 3 中工作的秘诀吗?

【问题讨论】:

    标签: python python-3.x m2crypto


    【解决方案1】:

    好的,选择another project's migration away from M2crypto to rsa,除此之外,上面可以很好地减少:

    def sign_string(message, priv_key_string):
        import rsa
        key = rsa.PrivateKey.load_pkcs1(priv_key_string.encode())
        return rsa.sign(message.encode(), key, 'SHA-1')
    

    这并不是说这就是所有需要做的。 Python3 的字节/字符串分离解决了很多以前似乎不是问题的东西。我确信这是有道理的,但是当您必须在成熟的代码中逐步完成漫长的签名过程才能弄清楚您在说什么时,它就是一个 PITA。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-05
      • 2021-04-13
      • 2011-02-09
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多