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实现bucket排序算法实例分析
May 04 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
django 装饰器 检测登录状态操作
Jul 02 Python
关于Kotlin中SAM转换的那些事
Sep 15 Python
python 装饰器重要在哪
Feb 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
PHP 第三节 变量介绍
2012/04/28 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
PHP判断浏览器、判断语言代码分享
2015/03/05 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
js实现在同一窗口浏览图片
2014/09/17 Javascript
jQuery验证插件validation使用指南
2015/04/21 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
python实现多线程采集的2个代码例子
2014/07/07 Python
Python多线程扫描端口代码示例
2018/02/09 Python
python简单商城购物车实例代码
2018/03/15 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
Python创建数字列表的示例
2019/11/28 Python
YUV转为jpg图像的实现
2019/12/09 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
董事长助理岗位职责
2014/02/18 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
演讲稿格式
2014/04/30 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
《观潮》教学反思
2016/02/17 职场文书
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
MySQL时区造成时差问题
2022/04/13 MySQL