分享一个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 23 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
pandas删除指定行详解
Apr 04 Python
python调用支付宝支付接口流程
Aug 15 Python
python 遗传算法求函数极值的实现代码
Feb 11 Python
python实现人机五子棋
Mar 25 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
Python random模块的使用示例
Oct 10 Python
virtualenv隔离Python环境的问题解析
Jun 21 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/12/06 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
银行会计业务的个人自我评价
2013/11/02 职场文书
销售冠军获奖感言
2014/02/03 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
创业计划书之美容店
2019/09/16 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
Python+Tkinter制作专属图形化界面
2022/04/01 Python