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实现给字典添加条目的方法
Sep 25 Python
在Python的Flask框架下收发电子邮件的教程
Apr 21 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
python3+PyQt5使用数据库窗口视图
Apr 24 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
Python实现GIF图倒放
Jul 16 Python
Python如何将装饰器定义为类
Jul 30 Python
python绘制分布折线图的示例
Sep 24 Python
Python通过字典映射函数实现switch
Nov 06 Python
python获取天气接口给指定微信好友发天气预报
Dec 28 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
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
分享10段PHP常用代码
2015/11/11 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
js获取图片长和宽度的代码
2009/11/24 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
JavaScript对JSON数组简单排序操作示例
2019/01/31 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
tensorflow更改变量的值实例
2018/07/30 Python
python使用zip将list转为json的方法
2018/12/31 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
主持词开场白
2014/03/17 职场文书
结对共建工作方案
2014/06/02 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
党的群众路线教育实践活动个人整改措施范文
2014/11/04 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL
Redis Lua脚本实现ip限流示例
2022/07/15 Redis