python实现AES和RSA加解密的方法


Posted in Python onMarch 28, 2019

本文实例为大家分享了python实现AES和RSA加解密的具体代码,供大家参考,具体内容如下

AES

AES 是一种对称加密算法,用key对一段text加密,则用同一个key对密文解密,

from Crypto import Random
from Crypto.Hash import SHA
from Crypto.Cipher import AES
from Crypto.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
from Crypto.Signature import PKCS1_v1_5 as Signature_pkcs1_v1_5
from Crypto.PublicKey import RSA
import base64


# 秘钥
key = 'chenqichenqi1234'

# 明文
raw = 'sina company11111111111111111111'

# 加密
iv = Random.new().read(AES.block_size)
cipher = AES.new(key, AES.MODE_CFB, iv)
data = iv + cipher.encrypt(raw)


# 解密
iv = data[:16]
cipher = AES.new(key, AES.MODE_CFB, iv)
print cipher.decrypt(data[16:])

RSA

RSA是一种公钥密码算法,RSA的密文是对代码明文的数字的 E 次方求mod N 的结果。也就是将明文和自己做E次乘法,然后再将其结果除以 N 求余数,余数就是密文。RSA是一个简洁的加密算法。E 和 N 的组合就是公钥(public key)。

对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文。D 和 N 的组合就是私钥(private key)。

# 伪随机数生成器
random_generator = Random.new().read

# rsa算法生成实例
rsa = RSA.generate(1024, random_generator)

# 秘钥对的生成
private_pem = rsa.exportKey()
public_pem = rsa.publickey().exportKey()
message = "chenqi"

# 公钥加密
rsakey = RSA.importKey(public_pem)
cipher = Cipher_pkcs1_v1_5.new(rsakey)
cipher_text = base64.b64encode(cipher.encrypt(message))
print cipher_text


# 私钥解密
rsakey = RSA.importKey(private_pem)
cipher = Cipher_pkcs1_v1_5.new(rsakey)
text = cipher.decrypt(base64.b64decode(cipher_text), random_generator)
print text

如上,RSA算法可以实现公钥加密、私钥解密。

在C/S架构的通信中,如果Client要向Server发送一段消息:

0、Server事先生成秘钥对;

1、Client请求Server的公钥;

2、Client用公钥加密mesage,并将密文发给Server;

3、Server用私钥解密,获取明文;

如果Server要向Client发送消息,流程也是类似的。

这个例子还有个问题,Server的公钥是公开的,任何人都可以得到。Server只能保证只有自己的私钥可以解密消息,但不能识别消息的来源是不是可靠,因为任何人都可能用公钥加密一段文本发给Server,这里就涉及到数字签名。

Clinet也可以生成自己的秘钥对,请求Server时把自己的公钥带过去

0、Server事先生成秘钥对、Client也事先生成秘钥对;

1、Client请求Server的公钥;

2、Client用Server的公钥加密mesage,并将密文发给Server,随请求一起发送一个签名(Clinet用私钥加密一个签名,并同时附带上自己的公钥);

3、Server用Clinet的公钥解密出签名,并核对;

4、Server用私钥解密,获取明文;

小结

加密主要用对方的公钥,解密用自己的私钥。签名用自己的私钥,验签用对方的公钥。

加密解密:公钥加密,私钥解密

签名验签:私钥签名,公钥验签

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
比较详细Python正则表达式操作指南(re使用)
Sep 06 Python
Python 的 Socket 编程
Mar 24 Python
使用rpclib进行Python网络编程时的注释问题
May 06 Python
Python中的列表生成式与生成器学习教程
Mar 13 Python
python中常用的九种预处理方法分享
Sep 11 Python
python opencv之SIFT算法示例
Feb 24 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
Oct 21 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 Python
通过python调用adb命令对App进行性能测试方式
Apr 23 Python
python简单实现AES加密和解密
Mar 28 #Python
Python中dict和set的用法讲解
Mar 28 #Python
python3.x实现base64加密和解密
Mar 28 #Python
python实现AES加密解密
Mar 28 #Python
详解python tkinter教程-事件绑定
Mar 28 #Python
Python中捕获键盘的方式详解
Mar 28 #Python
python sort、sort_index方法代码实例
Mar 28 #Python
You might like
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
微信支付开发维权通知实例
2016/07/12 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
HTML5实现签到 功能
2018/10/09 HTML / CSS
语文教学随笔感言
2014/02/18 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
十周年庆典策划方案
2014/06/03 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
碧霞祠导游词
2015/02/09 职场文书
公务员年终个人总结
2015/02/12 职场文书
高中优秀作文(范文)
2019/08/15 职场文书