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实现socket客户端和服务端简单示例
Feb 24 Python
python实现字符串和日期相互转换的方法
May 13 Python
Django学习笔记之Class-Based-View
Feb 15 Python
Python实现图片转字符画的示例代码
Aug 21 Python
flask入门之表单的实现
Jul 18 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
python Django的web开发实例(入门)
Jul 31 Python
python如何通过twisted搭建socket服务
Feb 03 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
Python sublime安装及配置过程详解
Jun 29 Python
Python类的继承super相关原理解析
Oct 22 Python
Python带你从浅入深探究Tuple(基础篇)
May 15 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给每个段落添加空格的方法
2015/03/20 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
js实现日期级联效果
2014/01/23 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
2016/10/13 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
js设置文字颜色的方法示例
2016/12/30 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
JavaScript实现区块链
2018/03/14 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
JavaScript实现简单轮播图效果
2018/12/01 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
python 实现插入排序算法
2012/06/05 Python
python调用cmd命令行制作刷博器
2014/01/13 Python
python3音乐播放器简单实现代码
2020/04/20 Python
python2.7的编码问题与解决方法
2016/10/04 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
python global关键字的用法详解
2019/09/05 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
flask开启多线程的具体方法
2020/08/02 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
ETO男装官方网店:ETO Jeans
2019/02/28 全球购物
公务员综合考察材料
2014/02/01 职场文书
少年闰土教学反思
2014/02/22 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python