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 Tkinter基础控件用法
Sep 03 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
Python实现的直接插入排序算法示例
Apr 29 Python
python画图系列之个性化显示x轴区段文字的实例
Dec 13 Python
对python:print打印时加u的含义详解
Dec 15 Python
使用GitHub和Python实现持续部署的方法
May 09 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
python实现图像外边界跟踪操作
Jul 13 Python
Flask缓存静态文件的具体方法
Aug 02 Python
python如何运行js语句
Sep 09 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 03 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入门小知识
2008/03/24 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
php生成随机颜色的方法
2014/11/13 PHP
PHP错误机制知识汇总
2016/03/24 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
python中ConfigParse模块的用法
2014/09/29 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
使用Pycharm分段执行代码
2020/04/15 Python
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
农民工创业典型事迹
2014/01/25 职场文书
安全目标管理责任书
2014/07/25 职场文书
工作所在部门证明
2014/09/21 职场文书
儿园租房协议书范本
2014/12/02 职场文书
工资证明范本
2015/06/12 职场文书
2019初中学生入团申请书
2019/06/27 职场文书
PHP判断是否是json字符串
2021/04/01 PHP
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL
python超详细实现完整学生成绩管理系统
2022/03/17 Python