Python加密解密-AES

AES是对称加密,同一个密钥同时用来加密和解密.

AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐).

#示例

from Crypto.Cipher import AES
from Crypto import Random

key = b'Sixteen byte key'
iv = Random.new().read(AES.block_size)
cipher = AES.new(key, AES.MODE_CFB, iv)
msg = iv + cipher.encrypt(b'Attack at dawn')
print iv
print msg
iv

用于加密或解密的初始化向量。
在“MODE_ECB”和“MODE_CTR”下此字段被忽略。
对于“MODE_OPENPGP”,IV必须是block_size字节长度加密
block_size+ 2字节的解密(加密的* IV是预先固定在密文上的)
并且是强制性的。

AES.MODE(用于加密或解密的链接模式)
  • ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。

  • CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度。

    ECB和CBC的加密结果是不一样的,两者的模式不同,而且CBC会在第一个密码块运算时加入一个初始化向量(第三个参数iv)。

  • CFB/OFB实际上是一种反馈模式,目的也是增强破解的难度。CFB需要带上segment_size参数

  • PGP: This mode should not be used.

  • CTR:带上counter参数

  • OPENPGP: 这种模式是CFB的一种变体,它只在PGP和OpenPGP应用程序中使用。需要一个初始化向量(IV)。
    与CFB不同,IV不是传输到接收机。相反,加密的IV是一个随机数据块。它的两个字节被复制,以作为键的正确性的校验和。因此加密的IV比clean IV长2字节。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 2,885评论 0 6
  • 前言 《图解密码技术》一书介绍了很多关于密码的知识,通读一遍需要不少时间。为了方便学习,我对书中关键的部分进行了总...
    咖枯阅读 7,335评论 1 25
  • 本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的...
    苹果粉阅读 11,624评论 5 29
  • 早上,娜在微信群里给大家出了个难题:爱的反义词是什么? “不爱。“第一个回答被娜秒回否定了。接下去是沉默,不知同学...
    开心鸿雁阅读 1,557评论 0 0
  • 从你的图上分析 你的性格看似外向 内心实际是内向不安的 情感类型偏稳定。性格中比较明显的特质 可能会有些固执和保守...
    皮皮爸爸时代阅读 270评论 0 0