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 函数基础知识汇总
Mar 09 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
使用python进行拆分大文件的方法
Dec 10 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
Django接收自定义http header过程详解
Aug 23 Python
Python代码块及缓存机制原理详解
Dec 13 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
python如何输出反斜杠
Jun 18 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
python 下载m3u8视频的示例代码
Nov 11 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
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
PHP7新增函数
2021/03/09 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
vue-cli之router基本使用方法详解
2017/10/17 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
python内存管理分析
2015/04/08 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
python matplotlib库的基本使用
2020/09/23 Python
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
文职个人求职信范文
2013/09/23 职场文书
企业办公室主任岗位职责
2014/02/19 职场文书
2014年库房工作总结
2014/11/26 职场文书
新生开学寄语大全
2015/05/28 职场文书
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python