Python3中M2Crypto执行副总裁的替代方案

2024-03-28 17:51:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正拼命地把一个旧项目升级到Python3,但是我3年多前写的一个库使用的是在Py3k下似乎不可用的M2Crypto,它几乎没有安装在Python2上,但这完全是另外一回事。在

不管怎样,我们只使用它的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从字符串加载密钥,并对提供的消息进行签名。表面上看起来很简单,但我真的不知道发生了什么。执行副总裁对我来说是个黑匣子。在

在python3中还有其他EVP库吗?或者有人知道让M2Crypto在python3中工作的秘密吗?在


Tags: 模块项目key字符串frommessagestringpython3
1条回答
网友
1楼 · 发布于 2024-03-28 17:51:35

好吧,选择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的字节/字符串分隔符包含了很多以前似乎不是问题的内容。我敢肯定这是有道理的,但是当你需要用成熟的代码来完成一个漫长的签名过程来弄清楚你在说什么时,这是一个关键。在

相关问题 更多 >