CBC(密码块链接)模式CBC是最常用的加密模式之一。它将明文分成固定大小的块,每个块在加密前会与前一个密文块进行XOR运算。对于第一个块,则使用一个初始向量(IV)进行XOR。这种链式结构使得每个密文块都依赖于它之前的所有明文块,提高了安全性。主要特点:

- 相同的明文块会产生不同的密文块

- 加密过程不能并行化,但解密可以并行

- 需要进行填充

- 一个块的错误会影响后续所有块的解密

ECB(电子密码本)模式最基础的加密模式,直接将明文块加密成密文块,没有额外的处理。主要特点:

- 相同的明文块会产生相同的密文块

- 加密和解密都可以并行处理

- 需要填充

- 安全性较低,不推荐用于大多数场景

CFB(密码反馈)模式将块密码转换为流密码,可以逐位或逐字节加密。加密时,先加密前一个密文块(初始使用IV),将结果与当前明文块进行XOR得到密文。特点:

- 不需要填充

- 支持实时加密

- 错误会传播

- 加密不能并行,解密可以并行

OFB(输出反馈)模式类似CFB,但是加密前一个密文块的结果直接用作下一个块的输入,与明文进行XOR。特点:

- 不需要填充

- 加密解密使用相同操作

- 可以预先生成密钥流

- 不会产生错误传播

CTR(计数器)模式使用递增的计数器值进行加密,将结果与明文XOR得到密文。特点:

- 支持并行处理

- 不需要填充

- 可以随机访问

- 安全性高,但需要确保计数器值不重复

GCM(伽罗瓦/计数器)模式GCM是一种认证加密模式,结合了CTR模式的加密和GHASH的认证功能。特点:

- 提供数据加密和认证

- 支持附加认证数据(AAD)

- 可并行处理

- 生成认证标签验证数据完整性

- 不需要填充