Python M2Crypto 的椭圆曲线支持
M2Crypto 是一个支持椭圆曲线(EC)加密的库,可以用来做 ECDSA 和 ECDH。作者安装了 OpenSSL 0.9.8i 这个版本,它支持椭圆曲线加密。但是当他运行 "from M2Crypto import EC,BIO" 这行代码时,出现了一个错误,提示 EC_init() 失败。于是他加了一些调试代码,打印出 m2.OPENSSL_VERSION_TEXT 的值,结果显示为 "OpenSSL 0.9.7 19 Feb 2003"。这个版本的 OpenSSL 是不支持椭圆曲线的。
他尝试了运行 "python setup.py build build_ext --openssl="新路径,指向 OpenSSL 0.9.8i 的安装位置"。虽然 M2Crypto 重新构建了,并且运行了 "Python setup.py install",但他仍然发现它指向的是 "旧版本的 OpenSSL"。
如果有人能提供一些建议,帮助他成功让 M2Crypto 使用 0.9.8i 版本,那将会非常有用。
3 个回答
请在这个链接提交一个问题报告:https://gitlab.com/m2crypto/m2crypto/issues/new。在报告中,请提供你的操作系统、Python版本、系统中所有OpenSSL库的位置和版本、编译器的版本。同时,请附上完整的命令python setup.py clean build install
的输出信息,包括正常输出和错误信息。谢谢!
可能是因为它在查找共享库文件 libssl.so 和 libcrypto.so,结果找到了旧版本的文件,这些文件在 /usr/lib 目录下。如果你把新的路径添加到 /etc/ld.so.conf 文件的最上面,这样系统就会先去这个新路径找文件,这样就能正常工作了。不过,这样做可能会影响其他依赖旧版本 OpenSSL 的应用程序。