前言

对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文。D 和 N 的组合就是私钥(private key)。

算法的加密和解密还是很简单的,可是公钥和私钥的生成算法却不是随意的。使用RSA公钥解密,用openssl命令就是openssl rsautl -verify -in cipher_text -inkey public.pem -pubin -out clear_text,但其python网上还真没有找到有博文去写,只有hash的rsa解签名。

这里使用rsa库,如果没有可以到官方网址https://pypi.python.org/pypi/rsa/3.1.4下载。

具体的安装方法大家可以参考这里://www.jb51.net/article/70331.htm

想了想原理,然后到rsa库的python代码里找了找,从verify的代码里提取了出来,又试验了试验,一切OK了。

代码如下:

#! /usr/bin/env python

# -*- coding: utf-8 -*-

import sys

#rsa

from rsa import PublicKey, common, transform, core

def f(cipher, PUBLIC_KEY):

public_key = PublicKey.load_pkcs1(PUBLIC_KEY)

encrypted = transform.bytes2int(cipher)

decrypted = core.decrypt_int(encrypted, public_key.e, public_key.n)

text = transform.int2bytes(decrypted)

if len(text) > 0 and text[0] == '\x01':

pos = text.find('\x00')

if pos > 0:

return text[pos+1:]

else:

return None

fn = sys.stdin.readline()[:-1]

public_key = sys.stdin.readline()[:-1]

x = f(open(fn).read(), open(public_key).read())

print x

用shell验证如下:

$ openssl genrsa -out pri2048.pem 2048

Generating RSA private key, 2048 bit long modulus

..+++

..............................................+++

e is 65537 (0x10001)

$ openssl rsa -in pri2048.pem -out pub2048.pem -RSAPublicKey_out

writing RSA key

$ echo -n 'Just a test' >1.txt

$ openssl rsautl -sign -in 1.txt -inkey pri2048.pem -out 1.bin

$ { echo 1.bin; echo pub2048.pem; } | ./test_rsa.py

Just a test

一切OK,注意,公钥pem从私钥里析出必须用-RSAPublicKey_out,这样pem文件的第一行和最后一行为以下,这样rsa.PublicKey.load_pkcs1才会认识。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

本文标题: python利用rsa库做公钥解密的方法教程

本文地址: http://www.cppcns.com/jiaoben/python/213945.html

python rsa 公钥解密_python利用rsa库做公钥解密的方法教程相关推荐

  1. 利用monment库做一个日历表

    利用monment库做一个日历表 先看完成品 点击上月和下月根据当前系统的时间进行变化 这是布局 <div class="wapper"><div class=& ...

  2. 利用nginx+lua+redis实现反向代理方法教程

    这篇文章主要给大家介绍了利用nginx+lua+redis实现反向代理方法教程,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 前言 最近因为工作需要,要进行IVR的 ...

  3. 淘宝网及新浪网等几大官方IP查询API接口地址库的调用及使用方法教程

    淘宝对外提供共享的一个IP地址库API,更新也比较及时,非常适合我们日常的使用. 以下讨论的是和淘宝网 IP查询 地址库 调用 API 相关的淘宝网及新浪网等几大官方IP查询API接口地址库的调用及使 ...

  4. python实现rsa加密源代码_python实现RSA加密(解密)算法

    RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准. 今天只有短的RSA钥匙才可能被强力方式解破.到2008年为止,世界上还没有任何可靠 ...

  5. python语言实现rsa公钥密码算法_python 实现 rsa 算法加解密密码

    python版本:2.7 需要用到的模块:pycrypto 模块下载地址:https://pypi.org/project/pycrypto/#files 私钥和公钥的准备: 在进行RSA加密前,我们 ...

  6. python实现非对称加密算法_Python使用rsa模块实现非对称加密与解密

    Python使用rsa模块实现非对称加密与解密 1.简单介绍: RSA加密算法是一种非对称加密算法 是由已知加密密钥推导出解密密钥在计算上是不可行的"密码体制.加密密钥(即公开密钥)PK是公 ...

  7. python实现rsa加密解密_python实现RSA加解密

    RSA的算法涉及三个参数,n.e.d. 其中,n是两个大质数p.q的积,n的二进制表示所占用的位数,就是所谓的密钥长度. e和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质:再选 ...

  8. python的api库_python 利用toapi库自动生成api

    在学习做接口测试自动化的时候,我们往往会自己动手写一些简单的API,比如写一个简单的TODO API之类. 不过自己写API的时候经常需要造一些假数据,以及处理分页逻辑,开始的时候还觉得比较有意思,但 ...

  9. python keyboard库_python利用 keyboard 库记录键盘事件

    今天也不知道是想了什么,突然就想要试试看我有效击键时的手速到底有多快.为此,需要记录下来击键的记录.于是找到了 Python 的 keyboard 库. 安装非常简单,只需执行 pip install ...

最新文章

  1. Linux下常用的C/C++开源Socket库
  2. 云计算正在告别DIY时代 阿里云专有云挑起企业级市场大梁
  3. 简而言之,JUnit:另一个JUnit教程
  4. iOS网络请求认证挑战
  5. Dubbo为什么用Go重写?
  6. OpenCV多目标跟踪与视频分析
  7. springboot(十二)-分布式锁(redis)
  8. devops的重要性_为什么反馈而不是指标对DevOps至关重要
  9. batchplot放到哪个文件夹_Batchplot使用技巧,转换CAD图纸格式并实现批量打印
  10. .h文件包含后显示类型_C语言中#include只能包含.h文件吗?
  11. [概率论]-随机变量
  12. python测试开发工程师前景_对未来测试开发工程师的前景你怎么看?
  13. 增强for循环(foreach解析)—带冒号的for循环
  14. 联想ts250进bios_联想ts240怎么进bios
  15. 小程序人脸识别 图片转换成base64 上传给后台
  16. c语言选猴王链表,C语言程序设计-猴子选大王[链表应用]
  17. 408计算机组成原理学习:数据的表示与计算
  18. WPF Grid边框_se7en3_新浪博客
  19. 【多目标跟踪论文阅读笔记——Chained-Tracker】
  20. IC电源去耦原理及滤波元件选型

热门文章

  1. ACMNO.41C语言-数字调序 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数
  2. ACMNO.35 C语言-宏润年 给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y)
  3. AOI光学自动检测技术 | 基本原理与设备构成
  4. Android开发常用框架汇总
  5. 《Python for Data Analysis》之 Series
  6. iOS 导航色差问题解决方案
  7. 解决redhat安装centos yum源的问题
  8. VS 常见快捷键(转)
  9. 2011年5月系统分析师考试­
  10. 上海松江大学城学计算机,上海松江大学城有几所学校?