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使用pil生成缩略图的方法
Mar 26 Python
在Django中创建动态视图的教程
Jul 15 Python
python相似模块用例
Mar 04 Python
详解Python的Lambda函数与排序
Oct 25 Python
Python中static相关知识小结
Jan 02 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
Python-copy()与deepcopy()区别详解
Jul 12 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
python flask中动态URL规则详解
Nov 22 Python
python飞机大战pygame碰撞检测实现方法分析
Dec 17 Python
python enumerate内置函数用法总结
Jan 07 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
2.PHP入门
2006/10/09 PHP
什么是MVC,好东西啊
2007/05/03 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
php图像处理类实例
2015/07/28 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
React Native 图片查看组件的方法
2018/03/01 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
python多线程编程中的join函数使用心得
2014/09/02 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
python实现xml转json文件的示例代码
2020/12/30 Python
三星英国官网:Samsung英国
2018/09/25 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
教育专业自荐书范文
2013/12/17 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
三年级学生评语
2014/04/23 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书