Python实现的rsa加密算法详解


Posted in Python onJanuary 24, 2018

本文实例讲述了Python实现的rsa加密算法。分享给大家供大家参考,具体如下:

算法过程

1. 随意选择两个大的质数p和q,p不等于q,计算N=pq。
2. 根据欧拉函数,不大于N且与N互质的整数??数??p-1)(q-1)。
3. 选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)。
4. 用以下这个公式计算d:d× e ≡ 1 (mod (p-1)(q-1))。
5. 将p和q的记录销毁。

(N,e)是公钥,(N,d)是私钥。

python代码

# -*- coding: utf-8 -*-
#!/usr/bin/env python
def range_prime(start, end):
 l = list()
 for i in range(start, end+1):
  flag = True
  for j in range(2, i):
   if i % j == 0:
    flag = False
    break
  if flag:
   l.append(i)
 return l
def generate_keys(p, q):
 #numbers = (11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47)
 numbers =range_prime(10, 100)
 N = p * q
 C = (p-1) * (q-1)
 e = 0
 for n in numbers:
  if n < C and C % n > 0:
   e = n
   break
 if e==0:
  raise StandardError("e not found") #Python3中改为BaseException
 d = 0
 for n in range(2, C):
  if(e * n) % C == 1:
   d = n
   break
 if d==0:
  raise StandardError("d not found")
 return ((N, e), (N, d))
def encrypt(m, key):
 C, x = key
 return (m ** x) % C
decrypt = encrypt
if __name__ == '__main__':
 pub, pri = generate_keys(47, 79)
 L = range(20, 30)
 C = map(lambda x: encrypt(x, pub), L)
 D = map(lambda x: decrypt(x, pri), C)
 print "三水点靠木测试结果:"
 print "keys:", pub, pri
 print "message:", L
 print "encrypt:", C
 print "decrypt:", D

运行结果:

Python实现的rsa加密算法详解

其实用什么语言实现这个过程都不是很麻烦,只是我们老师要求生成1024的随机数,用c语言写就有点恶心了,所以用python或者java实现要更加方便一点。

Python 相关文章推荐
Python接收Gmail新邮件并发送到gtalk的方法
Mar 10 Python
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
Python读取指定日期邮件的实例
Feb 01 Python
树莓派与PC端在局域网内运用python实现即时通讯
Jun 22 Python
Python实现生成密码字典的方法示例
Sep 02 Python
浅析python,PyCharm,Anaconda三者之间的关系
Nov 27 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
Python中Yield的基本用法
Oct 18 Python
详解matplotlib绘图样式(style)初探
Feb 03 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 22 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 #Python
python做量化投资系列之比特币初始配置
Jan 23 #Python
python在非root权限下的安装方法
Jan 23 #Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 #Python
Python 查看文件的读写权限方法
Jan 23 #Python
Python3 中文文件读写方法
Jan 23 #Python
Python3之文件读写操作的实例讲解
Jan 23 #Python
You might like
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
三种php连接access数据库方法
2013/11/11 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
php测试kafka项目示例
2020/02/06 PHP
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
windows下python之mysqldb模块安装方法
2017/09/07 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
解决Django no such table: django_session的问题
2020/04/07 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
倩碧英国官网:Clinique英国
2018/08/10 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
销售人员职业生涯规划范文
2014/03/01 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
win10下go mod配置方式
2021/04/25 Golang
PHP设计模式(观察者模式)
2021/07/07 PHP
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server