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实现二分法算法实例
Feb 02 Python
浅谈python数据类型及类型转换
Dec 18 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
解决Pandas的DataFrame输出截断和省略的问题
Feb 08 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
如何基于python实现画不同品种的樱花树
Jan 03 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
Python基于Dlib的人脸识别系统的实现
Feb 26 Python
python如何将两张图片生成为全景图片
Mar 05 Python
Python实现计算图像RGB均值方式
Jun 04 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 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 一个比较完善的简单文件上传
2010/03/25 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
PHP实现文件下载详解
2014/11/27 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
小程序如何获取多个formId实现详解
2019/09/20 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
Python fileinput模块使用实例
2015/06/03 Python
浅谈Python爬取网页的编码处理
2016/11/04 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
体育专业学生自我评价范文
2014/01/17 职场文书
学习雷锋标语
2014/06/25 职场文书
活动总结格式
2014/08/30 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
分析Netty直接内存原理及应用
2021/06/14 Java/Android