使用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读取word文档的方法
May 09 Python
python实现上传下载文件功能
Nov 19 Python
Python实现求解一元二次方程的方法示例
Jun 20 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
Flask框架 CSRF 保护实现方法详解
Oct 30 Python
python实现飞机大战项目
Mar 11 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
Python绘图实现台风路径可视化代码实例
Oct 23 Python
Django vue前后端分离整合过程解析
Nov 20 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
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
为你总结一些php系统类函数
2015/10/21 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
Bootstrap每天必学之下拉菜单
2015/11/25 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
python单例模式实例解析
2018/08/28 Python
Python解析json代码实例解析
2019/11/25 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
tensorboard显示空白的解决
2020/02/15 Python
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python