【问题标题】:Error when importing M2Crypto in Python on Windows x64在 Windows x64 上的 Python 中导入 M2Crypto 时出错
【发布时间】:2015-11-15 13:14:33
【问题描述】:

我正在尝试在 Windows 64 位上使用 M2Crypto 库。我使用的是 64 位版本的 Python,我已经从源代码编译了 M2Crypto,链接到 Openssl 1.0.2d。这次编译成功了,我已经通过运行python setup.py install安装了包。

当我从命令行运行Python 并输入import M2Crypto 时,它可以工作。接下来,我尝试通过创建椭圆曲线键来使用该库:

from M2Crypto import EC
kp = EC.gen_params(EC.NID_sect233k1)
kp.gen_key()
kp.save_key("test.key", None)

这会产生以下错误:

OPENSSL_Uplink(00007ABCAFE839000,08): no OPENSSL_Applink

我不确定如何处理此错误。我认为这个问题与 Openssl 有关。互联网上的一些资源正在写我应该重新编译 Python,但我不知道该怎么做。我想知道是否有更简单的方法来修复此错误,因为我不喜欢重新编译我的 Python 发行版。

此问题仅在 Windows 上发生。我在 OS X 或 Linux 上安装 M2Crypto 没有问题。

【问题讨论】:

    标签: python import openssl runtime-error m2crypto


    【解决方案1】:

    我无法通过我自己安装的 Python 和 M2Crypto 重现您的问题。但是,当openssl/applink.c 未包含并编译到应用程序中时,我已经看到no OPENSSL_Applink 在Windows 上发生,随后BIO 用于写入文件或stdinstdout

    因此,您可以尝试使用内存 BIO,然后从该内存 BIO 读取并将内容写入 Python 本身的文件,如下所示:

    >>> from M2Crypto import EC
    >>> kp = EC.gen_params(EC.NID_sect233k1)
    >>> kp.gen_key()
    >>> from M2Crypto import BIO
    >>> membuf = BIO.MemoryBuffer()
    >>> kp.save_key_bio(membuf, None)
    1
    >>> with open('test2.key', 'w') as f:
    ...     f.write(membuf.read())
    ...
    

    这不是真正的修复,只是一种解决方法。

    【讨论】:

    • 感谢您的回答。我已经测试过了,它似乎工作!我会走这条路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 2016-05-18
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多