分享一个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装饰器
Jun 15 Python
Python3中关于cookie的创建与保存
Oct 21 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
python操作kafka实践的示例代码
Jun 19 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
Aug 20 Python
python使用socket实现的传输demo示例【基于TCP协议】
Sep 24 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
Django crontab定时任务模块操作方法解析
Sep 10 Python
python文件目录操作之os模块
May 08 Python
python前后端自定义分页器
Apr 13 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
第五节 克隆 [5]
2006/10/09 PHP
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
PHP 7的一些引人注目的新特性简单介绍
2015/11/08 PHP
PHP递归的三种常用方式
2019/02/28 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
node.js require() 源码解读
2015/12/13 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
jQuery常用选择器详解
2017/07/17 jQuery
JS实现的RC4加密算法示例
2018/08/16 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
基于python socketserver框架全面解析
2017/09/21 Python
Django发送邮件功能实例详解
2019/09/02 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
有个性的自我评价范文
2013/11/15 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
基于PyQt5制作一个群发邮件工具
2022/04/08 Python