c语言 python rsa库_python如何调用libcrypto实现RSA解密?
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解密?相关推荐
- 易语言python_易语言python支持库
易语言python支持库 支持库名:易语言python支持库 1.0 版 相关文件: C:\Program Files (x86)\e\lib\pythonae.fne 数字签名:{C2547100- ...
- c调用python第三方库_Python使用ctypes模块调用DLL函数之C语言数组与numpy数组传递...
在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...
- python rsa库_python RSA加密解密
RSA加密(pip install pycryptodome) 总结: Pycrypto提供了比较完善的加密算法.RSA广泛用于加密与解密,还有数字签名通信领域.使用Publick/Private秘钥 ...
- python机器学习库_Python机器学习库 Top 10,你值得拥有!
随着人工智能技术的发展与普及,Python超越了许多其他编程语言,成为了机器学习领域中最热门最常用的编程语言之一.有许多原因致使Python在众多开发者中如此受追捧,其中之一便是其拥有大量的与机器学习 ...
- python 异常处理 库_python捕获数据库异常处理
[转载]Python简介 Python是一种解析性的,交互式的,开源的面向对象的编程语言,类似于Perl.Tcl.Scheme或Java. Python是一种面向对象.直译式的计算机程序设计语言,也是 ...
- python 3d库_python的3d库
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我正在寻找一个3d数学库在python或python绑定. 它需要处理旋转,平移 ...
- python argparse库_python标准库之argparse
argparse的使用 argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并 ...
- python echo函数_python如何调用php文件中的函数详解
前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...
- python图标库_python图形库
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 更新pip (1)查看pip版本 pip –version (2)更新pip p ...
- python自动控制库_python PyAUtoGUI库实现自动化控制鼠标键盘
PyAutoGUI 不知道你有没有用过,它是一款用Python自动化控制键盘.鼠标的库.但凡是你不想手动重复操作的工作都可以用这个库来解决. 比如,我想半夜时候定时给发个微信,或者每天自动刷页面等操作 ...
最新文章
- 从oracle中读取图片,从oracle数据库中读取图片,在jsp?
- windows7下安装MongoDB数据库
- win8如何卸载mysql5.0_Win8如何卸载Windows的服务?卸载Windows的服务的方法和步骤
- openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息
- PAT 1013 数素数 (20)
- 软件工程师所需掌握的“终极技术”是什么?
- Mysql数据导入导出
- matlab 电力系统动态仿真,基于Matlab的电力系统动态仿真分析
- 2018-2019-2 网络对抗技术 20165227 Exp4 恶意代码分析
- ARM-Linux中断系统
- idea中实体类右击没有ptg_这些6到飞起的idea插件,你还没用过?
- MYSQL定时创建表分区
- 【原创】公司各个阶段 CTO 需要做什么?(上篇)
- 【DjangoDRF+缓存+JWT+RabbitMQ 七万字总结】
- java计数器生成流水号_CODESOFT打印流水号
- Word文件的OpenXML解析(以Python3为例)
- Navicat连接mysql报错is not allowed to connect to this MySQL
- 从LiveJournal后台发展看大规模网站性能优化方法[zz]
- 全国高校通信与信息系统专业排名
- Ubuntu更新卡在 flashplugin-installer
热门文章
- 编译OpenWRT LEDE 固件的一些说明
- python画函数图像 保留_如何使用python的matplotlib画反正切函数图像
- ubuntu16.04安装ros操作系统,解决网络问题
- KEPWARE通过MODBUS_TCP连接西门子PAC3200电能表
- mysql 报表设计工具_如何使用报表创建工具Navicat创建报表
- Qt 未找到文件:NMAKE
- Modis数据下载与处理(mrt、wget)
- 【听课笔记】入行电商产品经理
- qq音乐无损下载php源码,QQ音乐无损歌曲地址分析以及多平台源码
- 信息学奥赛一本通习题答案(一)