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实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
用实例解释Python中的继承和多态的概念
Apr 27 Python
全面了解python字符串和字典
Jul 07 Python
使用Python对Excel进行读写操作
Mar 30 Python
python实现自主查询实时天气
Jun 22 Python
Python使用itertools模块实现排列组合功能示例
Jul 02 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
pyqt5之将textBrowser的内容写入txt文档的方法
Jun 21 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 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 常见郁闷问题答解
2006/11/25 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
js 处理URL实用技巧
2010/11/23 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
Python采用raw_input读取输入值的方法
2014/08/18 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
最新党员思想汇报
2014/01/01 职场文书
幼儿园老师寄语
2014/04/03 职场文书
质量承诺书格式
2014/05/20 职场文书
团队口号大全
2014/06/06 职场文书
党员评议个人总结
2014/10/20 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
创业计划书介绍
2019/04/24 职场文书
使用HBuilder制作一个简单的HTML5网页
2022/07/07 HTML / CSS