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实现在控制台输入密码不显示的方法
Jul 02 Python
python 把数据 json格式输出的实例代码
Oct 31 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
python numpy 按行归一化的实例
Jan 21 Python
python多线程调用exit无法退出的解决方法
Feb 18 Python
python实现京东订单推送到测试环境,提供便利操作示例
Aug 09 Python
pytorch实现线性拟合方式
Jan 15 Python
OpenCV中VideoCapture类的使用详解
Feb 14 Python
pytorch中的weight-initilzation用法
Jun 24 Python
Python二元算术运算常用方法解析
Sep 15 Python
python利用google翻译方法实例(翻译字幕文件)
Sep 21 Python
Python自然语言处理之切分算法详解
Apr 25 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提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
实例讲解React 组件
2020/07/07 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
python显示天气预报
2014/03/02 Python
python 根据pid杀死相应进程的方法
2017/01/16 Python
django实现用户登陆功能详解
2017/12/11 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
anaconda如何查看并管理python环境
2019/07/05 Python
python的列表List求均值和中位数实例
2020/03/03 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
公司廉洁自律承诺书
2014/03/27 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
爱心捐助倡议书
2014/05/19 职场文书
关于环保的标语
2014/06/13 职场文书
师德师风自查材料
2014/10/14 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
博士给导师的自荐信
2015/03/06 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
JavaScript 定时器详情
2021/11/11 Javascript
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技