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黑帽子取代netcat
Feb 10 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 Python
使用python3+xlrd解析Excel的实例
May 04 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
django3.02模板中的超链接配置实例代码
Feb 04 Python
python手写均值滤波
Feb 19 Python
jupyter notebook 增加kernel教程
Apr 10 Python
如何利用Python 进行边缘检测
Oct 14 Python
在python中对于bool布尔值的取反操作
Dec 11 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优化那些事(经验分享)
2014/11/27 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
Expandable "Detail" Table Rows
2007/08/29 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
xml转json的js代码
2012/08/28 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
理解javascript async的用法
2017/08/22 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
Python实现的一个简单LRU cache
2014/09/26 Python
解析Python的缩进规则的使用
2019/01/16 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Python类继承和多态原理解析
2020/02/05 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
工作个人的自我评价
2014/01/14 职场文书
办公室综合文员岗位职责范本
2014/02/13 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
驾驶员安全责任书
2014/07/22 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
2015年党风廉政建设工作总结
2015/04/09 职场文书
导游词之桂林
2019/08/20 职场文书
Django实现翻页的示例代码
2021/05/24 Python
python 爬取吉首大学网站成绩单
2021/06/02 Python
mysql sql常用语句大全
2022/06/21 MySQL