使用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内置数据结构与操作符的练习题集锦
Jul 01 Python
Python矩阵常见运算操作实例总结
Sep 29 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
Python操作Excel把数据分给sheet
May 20 Python
PyCharm Community安装与配置的详细教程
Nov 24 Python
python实现经典排序算法的示例代码
Feb 07 Python
Python3爬虫RedisDump的安装步骤
Feb 20 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 22 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
PHP+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
php下将XML转换为数组
2010/01/01 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python更新所有已安装包的操作
2020/02/13 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
详解Python 中的容器 collections
2020/08/17 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
详解Python模块化编程与装饰器
2021/01/16 Python
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
北承题目(C++)
2012/05/16 面试题
Python使用openpyxl复制整张sheet
2021/03/24 Python
学子宴答谢词
2014/01/25 职场文书
中学教师请假制度
2014/02/03 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
python如何在word中存储本地图片
2021/04/07 Python
django中websocket的具体使用
2022/01/22 Python