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的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
Python实现的质因式分解算法示例
May 03 Python
利用Python+阿里云实现DDNS动态域名解析的方法
Apr 01 Python
Django 表单模型选择框如何使用分组
May 16 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
Python 处理文件的几种方式
Aug 23 Python
Tensorflow tf.tile()的用法实例分析
May 22 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
如何利用python之wxpy模块玩转微信
Aug 17 Python
python 实现端口扫描工具
Dec 18 Python
matplotlib之属性组合包(cycler)的使用
Feb 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中fgetcsv()函数用法实例
2014/11/28 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
jquery cookie插件代码类
2009/05/26 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
Python的语言类型(详解)
2017/06/24 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
HTTP状态码详解
2021/03/18 杂记
时尚休闲吧创业计划书
2014/01/25 职场文书
水果超市创业计划书
2014/01/27 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
保护地球的标语
2014/06/17 职场文书
企业法人代表证明书
2014/09/27 职场文书
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
python Tkinter模块使用方法详解
2022/04/07 Python