openssl AES加密模式详解

  高级密码学的加密标准,(Advance Encryption Standard, AES),是美国联邦政府采用的一种区块加密标准。是一种对称分组加密算法。对称/分组密码一般分为流加密(如OFB,CFB)和块加密(ECB、CBC等),对于流加密,需要将分组密码转换为流模式工作,对于块加密(或称分组加密),如果需要加密超过块大小的数据,就需要涉及填充和链加密模式。

1. ECB(Electronic Code Book/电子密码本)模式

  ECB模式是最简单的加密模式,它将待加密的数据分成若干个分组,每组的大小与加密密钥长度相同,然后每组都用相同的密钥进行加密。
优点:
  1.简单
  2.有利于并行计算
  3.误差不会被传递
缺点:
  1.不能隐藏明文的模式
  2.可能对明文进行主动攻击

2.CBC(Cipher Block Chaining,加密块链)模式

  每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于前面所以的明文。同时为了保证每条消息的唯一性,在第一个块中需要使用初始化向量IV。CBC是最为常用的工作模式。它的主要缺点是加密过程是串行化的,无法被并行化。而且消息必须被填充到块大小的整数倍。在加密时,明文的微小改变会导致其后的全部密文块发生改变。但他的解密过程可以被并行化。
优点:
  1.不容易主动攻击,安全行好于ECB,适合传输长度较长的报文,是SSL,IPSec的标准。
缺点:
  1.不利于并行计算
  2.误差传递
  3.需要初始化向量IV

3.CFB(Cipher feedback/密文反馈)模式

  与ECB和CBC模式只能够加密块数据不同,可以将块密码变为自同步的流密码;CFB的解密过程几乎就是颠倒的CBC过程。
优点:
  1.隐藏了明文模式
  2.分组密码转化为流模式
  3.可以及时加密传送小于分组的数据
缺点:
  1.不利于并行计算
  2.误差传送,一个明文单元损坏影响多个单元
  3.唯一的IV

4.OFB(Output FeedBack,输出反馈模式)

  先用块加密器加密得到密钥流,然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生产密钥流,再将密钥流与密文流进行异或得到明文,由于异或操作的对称性所以加密和解密的流程完全一样。
  1.隐藏了明文模式;
  2.分组密码转化为流模式
  3.可以及时加密传送小于分组的数据
缺点:
  1.不利于并行计算
  2.对明文的主动攻击是可能的
  3.误差传送,一个明文单元损坏影响多个单元

5.CRT(Counter,计数)模式

  计算器模式不常见,在CRT模式中,有一个自增算子,这个算子用密钥加密后的输出和明文异或的结果得到密文,相当于一次一密。
优点:
  1.有利于并行计算
  2.误差不传递
  3.安全性高(至少和其他模式一样安全,如CBC,CFB,OFB)
  4.简单性,加解密算法完全一样。
  5.无填充,可以支持任意个字节的数据加密,而不需要填充
  6.随机访问,第i个密文的解密不依赖于第i-1个密文,提供了很高的随机访问能力
缺点:
  1.不能进行完整性校验,密文在传输过程中丢失比特位将导致后续比特无法正确解密。

你可能感兴趣的:(c)