分享一个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定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 Python
Python实现远程调用MetaSploit的方法
Aug 22 Python
python人人网登录应用实例
Sep 26 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
python实现屏保计时器的示例代码
Aug 08 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
Python 使用type来定义类的实现
Nov 19 Python
使用python3批量下载rbsp数据的示例代码
Dec 20 Python
将自己的数据集制作成TFRecord格式教程
Feb 17 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
2014/12/22 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python自定义类的数组排序实现代码
2016/08/28 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
回门宴父母答谢词
2014/01/26 职场文书
运动会通讯稿150字
2014/02/15 职场文书
实习报告评语
2014/04/26 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
信用卡工资证明范本
2015/06/19 职场文书
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL