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新手中常见的疑惑及解答
Jun 14 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 Python
python中numpy包使用教程之数组和相关操作详解
Jul 30 Python
python生成二维码的实例详解
Oct 29 Python
python命令行参数用法实例分析
Jun 25 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
Apr 08 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
详细分析Python collections工具库
Jul 16 Python
python中的垃圾回收(GC)机制
Sep 21 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
单位速度在实战中的运用
2020/03/04 星际争霸
PHP 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
php去除数组中重复数据
2014/11/18 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
Javascript的一种模块模式
2008/03/22 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
Python类的基础入门知识
2008/11/24 Python
Python读取图片属性信息的实现方法
2016/09/11 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
一年级数学教学反思
2014/02/01 职场文书
运动会方阵解说词
2014/02/12 职场文书
公益广告语集锦
2014/03/13 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
博士生专家推荐信
2014/09/26 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
交通处罚决定书
2015/06/24 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
Python的property属性详细讲解
2022/04/11 Python