首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在中导入M2Crypto时出错

在中导入M2Crypto时出错
EN

Stack Overflow用户
提问于 2015-11-15 13:14:33
回答 1查看 837关注 0票数 2

我试图在Windows64位上使用M2Crypto库。我使用了64位版本的Python,并从源代码编译了M2Crypto,使用OpenSSL1.0.2d进行链接。这个编译是成功的,我已经通过运行python setup.py install安装了这个包。

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

代码语言:javascript
复制
from M2Crypto import EC
kp = EC.gen_params(EC.NID_sect233k1)
kp.gen_key()
kp.save_key("test.key", None)

这会产生以下错误:

代码语言:javascript
复制
OPENSSL_Uplink(00007ABCAFE839000,08): no OPENSSL_Applink

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-16 04:51:49

我无法用我自己安装的Python和M2Crypto来重现您的问题。但是,我在Windows上看到了no OPENSSL_Applink的发生,当时openssl/applink.c没有被包含并编译到应用程序中,后来使用BIO来写入文件、stdinstdout

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

代码语言:javascript
复制
>>> 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())
...

这不是一个真正的解决办法,只是一个解决办法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33720087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档