使用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 MD5文件生成码
Jan 12 Python
使用python实现生成用户信息
Mar 20 Python
python实现解数独程序代码
Apr 12 Python
python中模块的__all__属性详解
Oct 26 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 Python
python卸载后再次安装遇到的问题解决
Jul 10 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
pyinstaller还原python代码过程图解
Jan 08 Python
Python字典取键、值对的方法步骤
Sep 30 Python
利用Python读取微信朋友圈的多种方法总结
Aug 23 Python
Python matplotlib 利用随机函数生成变化图形
Apr 26 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连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP _construct()函数讲解
2019/02/03 PHP
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
跟老齐学Python之做一个小游戏
2014/09/28 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python清理子进程机制剖析
2017/11/23 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
Mac安装python3的方法步骤
2019/08/09 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
python属于解释型语言么
2020/06/15 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
英国在线泳装店:Simply Swim
2019/05/05 全球购物
思想专业自荐信范文
2013/12/25 职场文书
职业规划实施方案
2014/06/10 职场文书
工作说明书格式
2014/07/29 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers