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 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
零基础写python爬虫之神器正则表达式
Nov 06 Python
Python之用户输入的实例
Jun 22 Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 Python
pytorch中的transforms模块实例详解
Dec 31 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
浅谈python3 构造函数和析构函数
Mar 12 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 Python
python中xlutils库用法浅析
Dec 29 Python
详解Python自动化之文件自动化处理
Jun 21 Python
Pyhton爬虫知识之正则表达式详解
Apr 01 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 htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
(function($){...})(jQuery)的意思
2010/07/22 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
微信小程序签到功能
2018/10/31 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
Python import用法以及与from...import的区别
2015/05/28 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
意大利灯具购物网站:Lampade.it
2018/10/18 全球购物
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
JAVA招聘远程笔试题
2015/07/23 面试题
行政总经理岗位职责
2013/12/05 职场文书
实习公司领导推荐函
2014/05/21 职场文书
中层干部培训方案
2014/06/16 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
五年级作文之想象作文
2019/10/30 职场文书