python本身有很多实现rsa的不错的库,但是由于GIL的问题,不能利用多核,所以我尝试利用ctypes库调用openssl的libcrypto.so来突破多核限制。问题是我不知道libcrypto暴露的方法,不知道调用顺序和入参,网上有个签名的算法,我参照了一下写了这么一段代码:

import ctypes

from ctypes.util import find_library

_libcrypto = find_library('crypto')

sign = 'iYzF0bn6kwUtsqLmTSx8fx...'

cryptor = ctypes.cdll.LoadLibrary(_libcrypto)

RSA_size = cryptor.RSA_size

BIO_free = cryptor.BIO_free

RSA_free = cryptor.RSA_free

RSA_decrypt = cryptor.RSA_private_decrypt

PEM_read_bio_RSAPrivateKey = cryptor.PEM_read_bio_RSAPrivateKey

# RSA_PKCS1_PADDING = cryptor.RSA_NO_PADDING

privkey = '''-----BEGIN RSA PRIVATE KEY-----...-----END RSA PRIVATE KEY-----'''

bio = cryptor.BIO_new_mem_buf(privkey, -1)

key = PEM_read_bio_RSAPrivateKey(bio, 0, 0, 0)

r = BIO_free(bio)

if r != 1:

# break here

print 'BIO_free error'

return

rsa_size = RSA_size(key)

print rsa_size

rsa = ctypes.create_string_buffer(rsa_size)

#sign_size = ctypes.create_string_buffer(4)

ret = RSA_decrypt(len(sign), sign, rsa, key)

其中privkey是私钥,sign是我要解密的数据,然而这段代码并没有返回正确的结果。

想请问大家python调用libcrypto实现RSA解密的正确姿势,当然有其他能够利用多核的方案希望也能不吝赐教!

c语言 python rsa库_python如何调用libcrypto实现RSA解密?相关推荐

  1. 易语言python_易语言python支持库

    易语言python支持库 支持库名:易语言python支持库 1.0 版 相关文件: C:\Program Files (x86)\e\lib\pythonae.fne 数字签名:{C2547100- ...

  2. c调用python第三方库_Python使用ctypes模块调用DLL函数之C语言数组与numpy数组传递...

    在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...

  3. python rsa库_python RSA加密解密

    RSA加密(pip install pycryptodome) 总结: Pycrypto提供了比较完善的加密算法.RSA广泛用于加密与解密,还有数字签名通信领域.使用Publick/Private秘钥 ...

  4. python机器学习库_Python机器学习库 Top 10,你值得拥有!

    随着人工智能技术的发展与普及,Python超越了许多其他编程语言,成为了机器学习领域中最热门最常用的编程语言之一.有许多原因致使Python在众多开发者中如此受追捧,其中之一便是其拥有大量的与机器学习 ...

  5. python 异常处理 库_python捕获数据库异常处理

    [转载]Python简介 Python是一种解析性的,交互式的,开源的面向对象的编程语言,类似于Perl.Tcl.Scheme或Java. Python是一种面向对象.直译式的计算机程序设计语言,也是 ...

  6. python 3d库_python的3d库

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我正在寻找一个3d数学库在python或python绑定. 它需要处理旋转,平移 ...

  7. python argparse库_python标准库之argparse

    argparse的使用 argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并 ...

  8. python echo函数_python如何调用php文件中的函数详解

    前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...

  9. python图标库_python图形库

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 更新pip (1)查看pip版本 pip –version (2)更新pip p ...

  10. python自动控制库_python PyAUtoGUI库实现自动化控制鼠标键盘

    PyAutoGUI 不知道你有没有用过,它是一款用Python自动化控制键盘.鼠标的库.但凡是你不想手动重复操作的工作都可以用这个库来解决. 比如,我想半夜时候定时给发个微信,或者每天自动刷页面等操作 ...

最新文章

  1. 从oracle中读取图片,从oracle数据库中读取图片,在jsp?
  2. windows7下安装MongoDB数据库
  3. win8如何卸载mysql5.0_Win8如何卸载Windows的服务?卸载Windows的服务的方法和步骤
  4. openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息
  5. PAT 1013 数素数 (20)
  6. 软件工程师所需掌握的“终极技术”是什么?
  7. Mysql数据导入导出
  8. matlab 电力系统动态仿真,基于Matlab的电力系统动态仿真分析
  9. 2018-2019-2 网络对抗技术 20165227 Exp4 恶意代码分析
  10. ARM-Linux中断系统
  11. idea中实体类右击没有ptg_这些6到飞起的idea插件,你还没用过?
  12. MYSQL定时创建表分区
  13. 【原创】公司各个阶段 CTO 需要做什么?(上篇)
  14. 【DjangoDRF+缓存+JWT+RabbitMQ 七万字总结】
  15. java计数器生成流水号_CODESOFT打印流水号
  16. Word文件的OpenXML解析(以Python3为例)
  17. Navicat连接mysql报错is not allowed to connect to this MySQL
  18. 从LiveJournal后台发展看大规模网站性能优化方法[zz]
  19. 全国高校通信与信息系统专业排名
  20. Ubuntu更新卡在 flashplugin-installer

热门文章

  1. 编译OpenWRT LEDE 固件的一些说明
  2. python画函数图像 保留_如何使用python的matplotlib画反正切函数图像
  3. ubuntu16.04安装ros操作系统,解决网络问题
  4. KEPWARE通过MODBUS_TCP连接西门子PAC3200电能表
  5. mysql 报表设计工具_如何使用报表创建工具Navicat创建报表
  6. Qt 未找到文件:NMAKE
  7. Modis数据下载与处理(mrt、wget)
  8. 【听课笔记】入行电商产品经理
  9. qq音乐无损下载php源码,QQ音乐无损歌曲地址分析以及多平台源码
  10. 信息学奥赛一本通习题答案(一)