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中使用sort()方法进行排序的简单教程
May 21 Python
python 默认参数问题的陷阱
Feb 29 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
Django 路由系统URLconf的使用
Oct 11 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
opencv与numpy的图像基本操作
Mar 08 Python
python的内存管理和垃圾回收机制详解
May 18 Python
Python字符串的修改方法实例
Dec 19 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 Python
python如何写个俄罗斯方块
Nov 06 Python
Python Pandas pandas.read_sql函数实例用法
Jun 21 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
PHP程序员不应该忽略的3点
2015/10/09 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
Prototype Array对象 学习
2009/07/19 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python的正则表达式re模块的常用方法
2013/03/09 Python
django定期执行任务(实例讲解)
2017/11/03 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
python中kmeans聚类实现代码
2018/02/23 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
Django中的用户身份验证示例详解
2019/08/07 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
实体的生命周期
2013/08/31 面试题
《湘夫人》教学反思
2014/02/21 职场文书
工作睡觉检讨书
2014/02/25 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
小学记事作文之200字
2019/08/06 职场文书
Go 中的空白标识符下划线
2022/03/25 Golang