使用python实现rsa算法代码


Posted in Python onFebruary 17, 2016

RSA算法是一种非对称加密算法,是现在广泛使用的公钥加密算法,主要应用是加密信息和数字签名。

维基百科给出的RSA算法简介如下:

假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个私钥:

随意选择两个大的质数p和q,p不等于q,计算N=pq。

根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1)

选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)

用以下这个公式计算d:d × e ≡ 1 (mod (p-1)(q-1))

将p和q的记录销毁。

(N,e)是公钥,(N,d)是私钥。(N,d)是秘密的。Alice将她的公钥(N,e)传给Bob,而将她的私钥(N,d)藏起来。

#!/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") 
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 "keys:", pub, pri 
print "message:", L 
print "encrypt:", C 
print "decrypt:", D 
keys: (3713, 11) (3713, 1631) 
message: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29] 
encrypt: [406, 3622, 3168, 134, 3532, 263, 1313, 2743, 2603, 1025] 
decrypt: [20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L]

以上所述是小编给大家介绍的使用python实现rsa算法代码,希望对大家有所帮助!

Python 相关文章推荐
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 Python
Python实现批量读取word中表格信息的方法
Jul 30 Python
python表格存取的方法
Mar 07 Python
Python iter()函数用法实例分析
Mar 17 Python
为什么Python中没有&quot;a++&quot;这种写法
Nov 27 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
Python函数参数匹配模型通用规则keyword-only参数详解
Jun 10 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
python文字转语音的实例代码分析
Nov 12 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
python3 配置logging日志类的操作
Apr 08 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
Python的GUI框架PySide的安装配置教程
Feb 16 #Python
Python实现快速排序和插入排序算法及自定义排序的示例
Feb 16 #Python
python实现红包裂变算法
Feb 16 #Python
轻松实现python搭建微信公众平台
Feb 16 #Python
十条建议帮你提高Python编程效率
Feb 16 #Python
bpython 功能强大的Python shell
Feb 16 #Python
深入解读Python解析XML的几种方式
Feb 16 #Python
You might like
重置版游戏视频
2020/04/09 魔兽争霸
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
php面向对象重点知识分享
2019/09/27 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
js实现单行文本向上滚动效果实例代码
2013/11/28 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
完善的jquery处理机制
2016/02/21 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
简述vue状态管理模式之vuex
2018/08/29 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
Python3基础之输入和输出实例分析
2014/08/18 Python
Python常用库推荐
2016/12/04 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
Python中的heapq模块源码详析
2019/01/08 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
python实现126邮箱发送邮件
2020/05/20 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
css3的transition属性详解
2014/12/15 HTML / CSS
技术总监管理职责范本
2014/03/06 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
MySQL导致索引失效的几种情况
2022/06/25 MySQL