分享一个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 11 Python
Python中使用装饰器来优化尾递归的示例
Jun 18 Python
轻松实现TensorFlow微信跳一跳的AI
Jan 05 Python
python基于SMTP协议发送邮件
May 31 Python
python实现批量视频分帧、保存视频帧
May 31 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
基于Python数据结构之递归与回溯搜索
Feb 26 Python
python如何处理程序无法打开
Jun 16 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
python 如何将office文件转换为PDF
Sep 22 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 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
php利用cookie实现访问次数统计代码
2011/05/19 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
浅谈vue的踩坑路
2017/08/31 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Python脚本实现格式化css文件
2015/04/08 Python
python3实现读取chrome浏览器cookie
2016/06/19 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
python中的闭包函数
2018/02/09 Python
python 对key为时间的dict排序方法
2018/10/17 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
详解Python中is和==的区别
2019/03/21 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
户籍证明的格式
2014/01/13 职场文书
培训楼经理岗位责任制
2014/02/10 职场文书
参观接待方案
2014/03/17 职场文书
开展创先争优活动总结
2014/08/28 职场文书
项目经理岗位职责
2015/01/31 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
公司人事管理制度
2015/08/05 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js