Python实现的rsa加密算法详解


Posted in Python onJanuary 24, 2018

本文实例讲述了Python实现的rsa加密算法。分享给大家供大家参考,具体如下:

算法过程

1. 随意选择两个大的质数p和q,p不等于q,计算N=pq。
2. 根据欧拉函数,不大于N且与N互质的整数??数??p-1)(q-1)。
3. 选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)。
4. 用以下这个公式计算d:d× e ≡ 1 (mod (p-1)(q-1))。
5. 将p和q的记录销毁。

(N,e)是公钥,(N,d)是私钥。

python代码

# -*- coding: utf-8 -*-
#!/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") #Python3中改为BaseException
 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 "三水点靠木测试结果:"
 print "keys:", pub, pri
 print "message:", L
 print "encrypt:", C
 print "decrypt:", D

运行结果:

Python实现的rsa加密算法详解

其实用什么语言实现这个过程都不是很麻烦,只是我们老师要求生成1024的随机数,用c语言写就有点恶心了,所以用python或者java实现要更加方便一点。

Python 相关文章推荐
Python实现合并字典的方法
Jul 07 Python
python实现单向链表详解
Feb 08 Python
python实现类之间的方法互相调用
Apr 29 Python
使用python脚本实现查询火车票工具
Jul 19 Python
对pandas数据判断是否为NaN值的方法详解
Nov 06 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
Python基于mysql实现学生管理系统
Feb 21 Python
Python+threading模块对单个接口进行并发测试
Jun 25 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
基于Python 函数和方法的区别说明
Mar 24 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 #Python
python做量化投资系列之比特币初始配置
Jan 23 #Python
python在非root权限下的安装方法
Jan 23 #Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 #Python
Python 查看文件的读写权限方法
Jan 23 #Python
Python3 中文文件读写方法
Jan 23 #Python
Python3之文件读写操作的实例讲解
Jan 23 #Python
You might like
长波有什么东西
2021/03/01 无线电
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
php分页示例分享
2014/04/30 PHP
PHP变量赋值、代入给JavaScript中的变量
2015/06/29 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python获取linux主机ip的简单实现方法
2016/04/18 Python
使用python实现ANN
2017/12/20 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
销售实习自我鉴定
2013/12/07 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
工程部岗位职责范本
2015/04/11 职场文书
保护环境的宣传语
2015/07/13 职场文书
六年级情感作文之500字
2019/10/23 职场文书