首页 > 代码库 > OpenSSL win 下报错 OPENSSL_Uplink(58D46000,08): no OPENSSL_Applink
OpenSSL win 下报错 OPENSSL_Uplink(58D46000,08): no OPENSSL_Applink
python 中使用 M2Crypto 想读写文件时总是报:
OPENSSL_Uplink(58D46000,08): no OPENSSL_Applink
windows 平台下使用 openssl 时不能直接操作与文件 IO 有关的函数。
因为 ms/uplink.c 会动态从当前 exe 中获取 ms/applink.c 的函数表,逻辑是
void OPENSSL_Uplink (volatile void **table, int index)
{HANDLE h = GetModuleHandle(NULL)GetProcAddress(h,"OPENSSL_Applink")}
。如果想使用,则必须在链接 exe 时候也链接 ms/uplink.c。
当 python 使用 M2Crypto 时,如果操作文件,可先创建一个 MemoryBuffer 的 BIO 对象, 然后将 MemoryBuffer 读取为字符串,手动将字符串写入文件。
print "Generating a 1024 bit private/public key pair for Bob..."Bob = M2Crypto.RSA.gen_key (1024, 65537)if os.name == ‘nt‘: mb = M2Crypto.BIO.MemoryBuffer() Bob.save_key_bio(mb, None) with open(‘Bob-private.pem‘, ‘wb‘) as f: f.write(mb.read_all())else: Bob.save_key (‘Bob-private.pem‘, None)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。