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 元组(Tuple)操作详解
Mar 11 Python
python实现超简单端口转发的方法
Mar 13 Python
Python实现对PPT文件进行截图操作的方法
Apr 28 Python
深入解读Python解析XML的几种方式
Feb 16 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
python3.6根据m3u8下载mp4视频
Jun 17 Python
python中可以声明变量类型吗
Jun 18 Python
Python importlib模块重载使用方法详解
Oct 13 Python
Python类的继承super相关原理解析
Oct 22 Python
解决python 输出到csv 出现多空行的情况
Mar 24 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
通过PHP CLI实现简单的数据库实时监控调度
2009/07/01 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
禁止空格提交表单的js代码
2013/11/17 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
python字典一键多值实例代码分享
2019/06/14 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
土木建筑学生自我评价
2014/01/14 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
双创工作实施方案
2014/03/26 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
政府个人对照检查材料
2014/08/28 职场文书
太空授课观后感
2015/06/17 职场文书
身份证丢失证明
2015/06/19 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python