分享一个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中删除文件的程序代码
Mar 13 Python
Python专用方法与迭代机制实例分析
Sep 15 Python
Python中类的定义、继承及使用对象实例详解
Apr 30 Python
Python图像灰度变换及图像数组操作
Jan 27 Python
整理Python 常用string函数(收藏)
May 30 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
Sep 15 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
python opencv 直方图反向投影的方法
Feb 24 Python
python爬取各类文档方法归类汇总
Mar 22 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
Python通过Pillow实现图片对比
Apr 29 Python
Java如何基于wsimport调用wcf接口
Jun 17 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
图形数字验证代码
2006/10/09 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
pyside写ui界面入门示例
2014/01/22 Python
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
python实现感知器
2017/12/19 Python
Django中间件实现拦截器的方法
2018/06/01 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
10个顶级Python实用库推荐
2021/03/04 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
某公司面试题
2012/03/05 面试题
外语系毕业生找工作的求职信
2013/11/28 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
工程部主管岗位职责
2015/02/12 职场文书
司机岗位职责范本
2015/04/10 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
Python实现数据的序列化操作详解
2022/07/07 Python