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中isalnum()方法的使用
May 18 Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 Python
Python的语言类型(详解)
Jun 24 Python
Python 异常处理的实例详解
Sep 11 Python
使用pycharm生成代码模板的实例
May 23 Python
python中csv文件的若干读写方法小结
Jul 04 Python
浅谈python实现Google翻译PDF,解决换行的问题
Nov 28 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
Python使用正则表达式分割字符串的实现方法
Jul 16 Python
Python数组并集交集补集代码实例
Feb 18 Python
python 获取域名到期时间的方法步骤
Feb 10 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实现概率性随机抽奖代码
2016/01/02 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP分享图片的生成方法
2018/04/25 PHP
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
vue点击页面空白处实现保存功能
2019/11/06 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
Pytorch中膨胀卷积的用法详解
2020/01/07 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
医药专业应届毕业生求职信范文
2014/01/01 职场文书
企业内控岗位的职责
2014/02/07 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
小学毕业寄语大全
2014/04/03 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
家长意见和建议怎么写
2015/06/04 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
详解OpenCV曝光融合
2022/04/29 Python