分享一个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基础教程之实现石头剪刀布游戏示例
Feb 11 Python
浅谈Python 中整型对象的存储问题
May 16 Python
Python 文件处理注意事项总结
Apr 10 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
Scrapy-Redis结合POST请求获取数据的方法示例
May 07 Python
PyQt5创建一个新窗口的实例
Jun 20 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
python django model联合主键的例子
Aug 06 Python
django-filter和普通查询的例子
Aug 12 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
Python fileinput模块如何逐行读取多个文件
Oct 05 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
PHP数组交集的优化代码分析
2011/03/06 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
PHP函数积累总结
2019/03/19 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
JS编程小常识很有用
2012/11/26 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
python提取log文件内容并画出图表
2019/07/08 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
什么是Linux虚拟文件系统VFS
2012/01/31 面试题
农民致富事迹材料
2014/01/23 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
国旗下的演讲稿
2014/05/08 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
见习报告格式范文
2014/11/08 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
工作态度怎么写
2015/06/25 职场文书
golang正则之命名分组方式
2021/04/25 Golang
如何在Python项目中引入日志
2021/05/31 Python
MySQL学习必备条件查询数据
2022/03/25 MySQL