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多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
python检查指定文件是否存在的方法
Jul 06 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
Jul 02 Python
判断网页编码的方法python版
Aug 12 Python
Python中修改字符串的四种方法
Nov 02 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
简单了解python高阶函数map/reduce
Jun 28 Python
微信小程序python用户认证的实现
Jul 29 Python
python实现猜拳小游戏
Apr 05 Python
Python 使用生成器代替线程的方法
Aug 04 Python
python 实现的车牌识别项目
Jan 25 Python
python基础之类属性和实例属性
Oct 24 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
用文本作数据处理
2006/10/09 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
js几个验证函数代码
2010/03/25 Javascript
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
浅析Prototype的模板类 Template
2011/12/07 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
Python线程的两种编程方式
2015/04/14 Python
Python定时器实例代码
2017/11/01 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
QML用PathView实现轮播图
2020/06/03 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
比利时香水网上商店:NOTINO
2018/03/28 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
综治宣传月活动总结
2014/04/28 职场文书
婚宴邀请函
2015/01/30 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
新党员入党决心书
2015/09/22 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js