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使用django获取用户IP地址的方法
May 11 Python
Python使用Supervisor来管理进程的方法
May 28 Python
Python实现控制台输入密码的方法
May 29 Python
简单解析Django框架中的表单验证
Jul 17 Python
Python全局变量用法实例分析
Jul 19 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
python和flask中返回JSON数据的方法
Mar 26 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 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
UCenter Home二次开发指南
2009/05/28 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
php计算年龄精准到年月日
2015/11/17 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
面向切面编程(AOP)的理解
2015/05/01 Javascript
JavaScript中Boolean对象的属性解析
2015/10/21 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
Python实现LRU算法的2种方法
2015/06/24 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
对TensorFlow中的variables_to_restore函数详解
2018/07/30 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
python regex库实例用法总结
2021/01/03 Python
如何做好总经理助理
2013/11/12 职场文书
精细化工应届生求职信
2013/11/17 职场文书
金融专业大学生自我评价
2014/01/09 职场文书
机械制造毕业生求职信
2014/03/03 职场文书
公司户外活动总结
2014/07/04 职场文书
开展创先争优活动总结
2014/08/28 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS
mysql查找连续出现n次以上的数字
2022/05/11 MySQL