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字节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值