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机器学习之决策树算法实例详解
Dec 06 Python
python爬取拉勾网职位数据的方法
Jan 24 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 Python
python使用matplotlib绘制热图
Nov 07 Python
pandas通过loc生成新的列方法
Nov 28 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
如何使用Python发送HTML格式的邮件
Feb 11 Python
用什么库写 Python 命令行程序(示例代码详解)
Feb 20 Python
django queryset相加和筛选教程
May 18 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
小偷PHP+Html+缓存
2006/12/20 PHP
mysql 字段类型说明
2007/04/27 PHP
php显示页码分页类的封装
2017/06/08 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
webpack构建换肤功能的思路详解
2017/11/27 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
Python实现全局变量的两个解决方法
2014/07/03 Python
python图像处理之反色实现方法
2015/05/30 Python
分享python数据统计的一些小技巧
2016/07/21 Python
使用Python读取大文件的方法
2018/02/11 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
环保建议书
2014/03/12 职场文书
合作协议书范本
2014/04/17 职场文书
小学中等生评语
2014/12/29 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书