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使用多线程不断刷新网页的方法
Mar 31 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
利用Python如何生成便签图片详解
Jul 09 Python
Python中Unittest框架的具体使用
Aug 27 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
Python list与NumPy array 区分详解
Nov 06 Python
python数据类型强制转换实例详解
Jun 22 Python
Django中F函数的使用示例代码详解
Jul 06 Python
详解用python -m http.server搭一个简易的本地局域网
Sep 24 Python
利用Python函数实现一个万历表完整示例
Jan 23 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 Python
pytorch中[..., 0]的用法说明
May 20 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
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
如何用python处理excel表格
2020/06/09 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
浅谈Python3中print函数的换行
2020/08/05 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
高级Java程序员面试要点
2013/08/02 面试题
周年庆典邀请函范文
2014/01/23 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
《草原》教学反思
2014/02/15 职场文书
大学生交通专业求职信
2014/09/01 职场文书
致青春观后感
2015/06/09 职场文书
教师节联欢会主持词
2015/07/04 职场文书
婚礼父母致辞
2015/07/28 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
学术会议开幕词
2016/03/03 职场文书
详解pytorch创建tensor函数
2022/03/22 Python