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设计模式之访问者模式
Nov 18 Python
DataFrame 将某列数据转为数组的方法
Apr 13 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Opencv实现抠图背景图替换功能
May 21 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
详解Python的爬虫框架 Scrapy
Aug 03 Python
用python写PDF转换器的实现
Oct 29 Python
Python调用飞书发送消息的示例
Nov 10 Python
python实现双链表
May 25 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的AES加密算法类
2015/03/12 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
thinkphp分页集成实例
2017/07/24 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
chrome原生方法之数组
2011/11/30 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
js下拉框二级关联菜单效果代码具体实现
2013/08/03 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
node.js require() 源码解读
2015/12/13 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
利用10行js代码实现上下滚动公告效果
2017/12/08 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
Python断言assert的用法代码解析
2018/02/03 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
python实现大学人员管理系统
2019/10/25 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
初三学生评语大全
2014/04/24 职场文书
学校就业推荐信范文
2014/05/19 职场文书
社区护士演讲稿
2014/08/27 职场文书
2014年双拥工作总结
2014/11/21 职场文书