分享一个python的aes加密代码


Posted in Python onDecember 22, 2020

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。---百度百科

本科的时候弄过DES加密算法加密计算机文件,而DES加密算法现在基本处于被废弃的状态,所以现在想试试更高级一点的。

DES加密算法可发展为3DES加密算法,后来又被升级为AES加密算法,加长了密钥长度,也就增加了暴力破解的难度。

本次使用Python进行AES的加密解密

import hashlib
from Crypto.Cipher import AES
import base64

class prpcrypt():
 def __init__(self,key):
  self.key = key # 因为在python3中AES传入参数的参数类型存在问题,需要更换为 bytearray , 所以使用encode编码格式将其转为字节格式(linux系统可不用指定编码)
  IV = 16 * '\x00'
  self.iv=IV.encode("utf-8")
  self.mode = AES.MODE_CBC
  self.BS = AES.block_size
  self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS)
  self.unpad = lambda s: s[0:-ord(s[-1])]

 # 加密
 def encrypt(self, text):
  text = self.pad(text).encode("utf-8")
  cryptor = AES.new(self.key, self.mode, self.iv)
  # 目前AES-128 足够目前使用(CBC加密)
  ciphertext = cryptor.encrypt(text)
  # base64加密
  return base64.b64encode(bytes(ciphertext))

 # 解密
 def decrypt(self, text):
  # base64解密
  text = base64.b64decode(text)
  cryptor = AES.new(self.key, self.mode, self.iv)
  # CBC解密
  plain_text = cryptor.decrypt(text)
  # 去掉补足的空格用strip() 去掉
  return self.unpad(bytes.decode(plain_text).rstrip('\0')) # 解密字节???


def gen_binsha(data):
 shavalue = hashlib.sha256()
 shavalue.update(data)
 return shavalue.digest()

if __name__ == '__main__':
 key='78f40cecf89'
 key=gen_binsha(key.encode('utf-8'))
 pc = prpcrypt(key=key) # 初始化密钥 和 iv

 text='qwerqwerkkk12345'
 e = pc.encrypt(text) # 加密
 d = pc.decrypt(e) # 解密
 print("加密:%s" % e)
 print("解密:%s"% d)
 print("长度:%s"% len(d))

以上就是分享一个python的aes加密代码的详细内容,更多关于python的aes加密代码的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
使用Python下载Bing图片(代码)
Nov 07 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
Python基于pandas实现json格式转换成dataframe的方法
Jun 22 Python
基于tensorflow加载部分层的方法
Jul 26 Python
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
python用match()函数爬数据方法详解
Jul 23 Python
python禁用键鼠与提权代码实例
Aug 16 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
python中字符串String及其常见操作指南(方法、函数)
Apr 06 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 #Python
去除python中的字符串空格的简单方法
Dec 22 #Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 #Python
Python中过滤字符串列表的方法
Dec 22 #Python
python中@property的作用和getter setter的解释
Dec 22 #Python
地图可视化神器kepler.gl python接口的使用方法
Dec 22 #Python
Python实现Word文档转换Markdown的示例
Dec 22 #Python
You might like
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
用javascript操作xml
2006/11/04 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
解决Python3中的中文字符编码的问题
2018/07/18 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
python实现Virginia无密钥解密
2019/03/20 Python
Python socket模块方法实现详解
2019/11/05 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
Python利用命名空间解析XML文档
2020/08/10 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
传播学专业毕业生自荐信
2013/11/04 职场文书
电台实习生求职信
2014/02/25 职场文书
爱心捐款倡议书
2014/04/14 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
组织生活会发言材料
2014/12/15 职场文书
采购员岗位职责
2015/02/03 职场文书
电影圆明园观后感
2015/06/03 职场文书
保护环境的宣传语
2015/07/13 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
golang 语言中错误处理机制
2021/08/30 Golang
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript