使用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高手之路python处理excel文件(方法汇总)
Jan 07 Python
Python实现FTP上传文件或文件夹实例(递归)
Jan 16 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
python爱心表白 每天都是浪漫七夕!
Aug 18 Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
解决python 文本过滤和清理问题
Aug 28 Python
pytorch:实现简单的GAN示例(MNIST数据集)
Jan 10 Python
使用sklearn的cross_val_score进行交叉验证实例
Feb 28 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
python中print格式化输出的问题
Apr 16 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
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
PHP闭包函数详解
2016/02/13 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
python实现简单神经网络算法
2018/03/10 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
python实现翻译word表格小程序
2020/02/27 Python
python统计文章中单词出现次数实例
2020/02/27 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
pyx文件 生成pyd 文件用于 cython调用的实现
2021/03/04 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
自愿离婚协议书范本
2014/09/13 职场文书
钱学森电影观后感
2015/06/04 职场文书
党性修养心得体会2016
2016/01/21 职场文书
win10更新失败无限重启解决方法
2022/04/19 数码科技