python实现RSA加密(解密)算法


Posted in Python onFebruary 17, 2016

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其密钥的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

python实现RSA加密(解密)算法

python实现RSA加密(解密)算法

核心代码:

# -*- encoding:gbk -*- import math,random#导入模块 def prime_num(max_num):#生成小于max_num的素数列表 prime_num=[] for i in xrange(2,max_num): temp=0 sqrt_max_num=int(math.sqrt(i))+1 for j in xrange(2,sqrt_max_num): if i%j==0: temp=j break if temp==0: prime_num.append(i) return prime_num def rsa_key():#生成密钥的函数 prime=prime_num(400)#小于400的素数列表 p=random.choice(prime[-50:-1])#从后50个素数中随机选择一个作为p q=random.choice(prime[-50:-1])#从后50个素数中随机选择一个作为q while(p==q):#如果p和q相等则重新选择 q=random.choice(prime[-50:-1]) N=p*q r=(p-1)*(q-1) r_prime=prime_num(r) e=random.choice(r_prime)#随机选一个素数 d=0 for n in xrange(2,r): if (e*n)%r==1: d=n break return ((N,e),(N,d)) def encrypt(pub_key,origal):#生成加密用的公钥 N,e=pub_key return (origal**e)%N def decrypt(pri_key,encry):#生成解密用的私钥 N,d=pri_key return (encry**d)%N

下面一段代码给大家介绍python_rsa加密解密

使用python进行rsa加密与加密,包括公钥加密私钥解密,私钥加密公钥解密。(需要安装M2Crypto库)。

代码:

#!/usr/bin/env python
#encoding=utf-8 
'''
测试rsa加密解密
'''
from M2Crypto import RSA 
msg = 'aaaa-aaaa'
rsa_pub = RSA.load_pub_key('rsa_pub.pem')
rsa_pri = RSA.load_key('rsa_pri.pem')
print '*************************************************************'
print '公钥加密,私钥解密'
ctxt = rsa_pub.public_encrypt(msg, RSA.pkcs1_padding)
ctxt64 = ctxt.encode('base64')
print ('密文:%s'% ctxt64)
rsa_pri = RSA.load_key('rsa_pri.pem')
txt = rsa_pri.private_decrypt(ctxt, RSA.pkcs1_padding)
print('明文:%s'% txt)
print '*************************************************************'
print '私钥加密,公钥解密'
ctxt_pri = rsa_pri.private_encrypt(msg, RSA.pkcs1_padding)
ctxt64_pri = ctxt.encode('base64')
print ('密文:%s'% ctxt64_pri)
txt_pri = rsa_pub.public_decrypt(ctxt_pri, RSA.pkcs1_padding)
print('明文:%s'% txt_pri)

库的安装说明

M2Crypto库的下载地址:

https://github.com/martinpaljak/M2Crypto

或者:https://pypi.python.org/pypi/M2Crypto

依赖的库:openssh-devel gcc swig (这3个库在centos上可以直接使用yum安装)

Python 相关文章推荐
python笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
Python实现LRU算法的2种方法
Jun 24 Python
Python队列的定义与使用方法示例
Jun 24 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
python如何去除字符串中不想要的字符
Jul 05 Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 Python
Pandas分组与排序的实现
Jul 23 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
python自动脚本的pyautogui入门学习
Apr 01 Python
使用python实现rsa算法代码
Feb 17 #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
You might like
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
动态统计当前输入内容的字节、字符数的实例详解
2017/10/27 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
Python正则表达式完全指南
2017/05/25 Python
对python Tkinter Text的用法详解
2018/10/11 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
Android面试宝典
2013/08/06 面试题
信息系统专业个人求职信范文
2013/12/07 职场文书
教师自荐信范文
2013/12/09 职场文书
2014的自我评价
2014/01/13 职场文书
书香校园活动方案
2014/02/28 职场文书
公司承诺书范文
2014/05/19 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
运动员入场词
2015/07/18 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python