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开发vim插件及心得分享
Nov 04 Python
Python变量作用范围实例分析
Jul 07 Python
Python的Django框架中消息通知的计数器实现教程
Jun 13 Python
Python实现读取并保存文件的类
May 11 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
Aug 15 Python
Python3.x爬虫下载网页图片的实例讲解
May 22 Python
Python 调用 zabbix api的方法示例
Jan 06 Python
python实现可下载音乐的音乐播放器
Feb 25 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
谈谈Python中的while循环语句
2019/03/10 Python
浅谈Python爬虫基本套路
2019/03/25 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
python分布式计算dispy的使用详解
2019/12/22 Python
Pycharm调试程序技巧小结
2020/08/08 Python
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
军校本科大学生自我评价
2014/01/14 职场文书
公司股权转让协议书
2014/04/12 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL
正则表达式基础与常用验证表达式
2022/06/16 Javascript