python encrypt 实现AES加密的实例详解


Posted in Python onFebruary 20, 2020

AES加密方式有五种ECB, CBC, CTR, CFB, OFB

从安全性角度推荐cbc算法

windows 下安装 : pip install pycryptodome

linux 下安装 : pip install pycrypto

cbc加密需要一个十六位的key 和一个十六位的iv(偏移量)

ecb加密不需要iv

aes cbc 加密的python实现

from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex

# 如果text不足十六位的倍数用空格补充
def add_to_16(text):
  if len(text.encode('utf8')) % 16:
    add = 16 - (len(text.encode('utf8')) % 16)
  else:
    add = 0
  text = text + '\0' * add
  return text

# 加密
def encrypt(text):
  key = '9999999999999999'.encode('utf8')
  mode = AES.MODE_CBC
  iv = b'qqqqqqqqqqqqqqqq'
  text = add_to_16(text)
  cryptos = AES.new(key, mode, iv)
  cipher_text = cryptos.encrypt(text)
  # 因为AES加密后的字符串不一定是ascii字符集的,输出保存可能存在问题,所以这里转为16进制字符串
  return b2a_hex(cipher_text)

# 解密后去掉空格
def decrypt(text):
  key = '9999999999999999'.encode('utf8')
  mode = AES.MODE_CBC
  iv = b'qqqqqqqqqqqqqqqq'
  cryptos = AES.new(key, mode, iv)
  plain_text = cryptos.decrypt(a2b_hex(text))
  return bytes.decode(plain_text).rstrip('\0')

if __name__ == '__main__':
  a = encrypt('hello')
  b = decrypt(a)
  print('加密', a)
  print('解密', b)

aes ecb加密, 没有偏移量iv

from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex

# 如果text不足十六位的倍数用空格补充
def add_to_16(text):
  if len(text.encode('utf8')) % 16:
    add = 16 - (len(text.encode('utf8')) % 16)
  else:
    add = 0
  text = text + '\0' * add
  return text

# 加密
def encrypt(text):
  key = '9999999999999999'.encode('utf8')
  mode = AES.MODE_ECB
  text = add_to_16(text)
  cryptos = AES.new(key, mode)
  cipher_text = cryptos.encrypt(text)
  # 因为AES加密后的字符串不一定是ascii字符集的,输出保存可能存在问题,所以这里转为16进制字符串
  return b2a_hex(cipher_text)

# 解密后去掉空格
def decrypt(text):
  key = '9999999999999999'.encode('utf8')
  mode = AES.MODE_ECB
  cryptos = AES.new(key, mode)
  plain_text = cryptos.decrypt(a2b_hex(text))
  return bytes.decode(plain_text).rstrip('\0')

if __name__ == '__main__':
  a = encrypt('hello')
  b = decrypt(a)
  print('加密', a)
  print('解密', b)

到此这篇关于python encrypt 实现AES加密的实例详解的文章就介绍到这了,更多相关python encrypt 实现AES加密内容请搜素三水点靠木以前的文章或下面相关文章,希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python时区设置方法与pytz查询时区教程
Nov 27 Python
python在控制台输出进度条的方法
Jun 20 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
详解python的几种标准输出重定向方式
Aug 15 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
Python正则匹配判断手机号是否合法的方法
Dec 09 Python
详解Python基础random模块随机数的生成
Mar 23 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
python安装cx_Oracle和wxPython的方法
Sep 14 Python
Python关于反射的实例代码分享
Feb 20 #Python
Python3监控疫情的完整代码
Feb 20 #Python
浅谈Pytorch torch.optim优化器个性化的使用
Feb 20 #Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
Feb 20 #Python
Python sys模块常用方法解析
Feb 20 #Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 #Python
pytorch ImageFolder的覆写实例
Feb 20 #Python
You might like
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
类之Prototype.js学习
2007/06/13 Javascript
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
2015/01/13 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
python实现微信打飞机游戏
2020/03/24 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
python的pip有什么用
2020/06/17 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
25岁生日感言
2014/01/13 职场文书
高等教育学自荐书范文
2014/02/10 职场文书
项目经理任命书
2014/06/04 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
运动会报道稿大全
2015/07/23 职场文书
公司食堂管理制度
2015/08/05 职场文书
社会实践心得体会范文
2016/01/14 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
idea下配置tomcat避坑详解
2022/04/12 Servers