python使用aes加密解密(python实现AES和RSA加解密的方法)
python使用aes加密解密
python实现AES和RSA加解密的方法本文实例为大家分享了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用私钥解密,获取明文;
小结
加密主要用对方的公钥,解密用自己的私钥。签名用自己的私钥,验签用对方的公钥。
加密解密:公钥加密,私钥解密
签名验签:私钥签名,公钥验签
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://www.cnblogs.com/chenny7/p/7693334.html
- python字符串的拼接与分割(Python字符串通过'+'和join函数拼接新字符串的性能测试比较)
- python装饰器初学者教程(Python3.5装饰器原理及应用实例详解)
- mysql怎么做教材信息管理系统(python+mysql实现学生信息查询系统)
- pythonpandas数据类型(Python3.5 Pandas模块之Series用法实例分析)
- python中lambda教程(浅析python的Lambda表达式)
- python报表可视化(使用Python快速制作可视化报表的方法)
- python中函数最少能定义几个参数(Python函数中不定长参数的写法)
- python实用的游戏小代码(python3实现小球转动抽奖小游戏)
- python实现栈和队列(Python利用heapq实现一个优先级队列的方法)
- python编程开发环境步骤(python开发准备工作之配置虚拟环境非常重要)
- 使用python制作游戏(python制作填词游戏步骤详解)
- python怎么在csv修改数据(python 编写输出到csv的操作)
- python3html怎么转换成pdf(Python实现html转换为pdf报告生成pdf报告功能示例)
- python关于微信的模块(python基于itchat模块实现微信防撤回)
- python怎么用pandas读取两列数据(python 利用pandas将arff文件转csv文件的方法)
- python柱状图第四节(python使用Plotly绘图工具绘制柱状图)
- 吉林舒兰 封城 15人确诊 276人隔离,出现跨省传播(吉林舒兰封城)
- 四月新番CP人气榜公布,《剃须》两度上榜,沙优不是女朋友(四月新番CP人气榜公布)
- 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜(2019年外媒秋季新番动画角色CP排行榜)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
热门推荐
- navicat premium连接mysql报错(Navicat连接MySQL错误描述分析)
- 设置超链接宽度和高度
- python对mysql数据分析(python使用adbapi实现MySQL数据库的异步存储)
- python怎么爬取excel数据(python爬取内容存入Excel实例)
- vs中找不到bin文件夹
- dedecms标签怎么调用(dedeCMS 站内搜索代码的改进方法)
- 使用javascript数组循环(JavaScript数组reduce方法的语法与实例解析)
- linux操作系统的关机指令有哪些(Linux系统关机命令之间的区别及用法详解)
- css 图片边缘虚化(CSS3对图片照片进行边缘模糊处理的实现)
- docker-compose部署实例(详解docker-compose速度太慢解决方式)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9