CBC(密码块链接)模式CBC是最常用的加密模式之一。它将明文分成固定大小的块,每个块在加密前会与前一个密文块进行XOR运算。对于第一个块,则使用一个初始向量(IV)进行XOR。这种链式结构使得每个密文块都依赖于它之前的所有明文块,提高了安全性。主要特点:
- 相同的明文块会产生不同的密文块
- 加密过程不能并行化,但解密可以并行
- 需要进行填充
- 一个块的错误会影响后续所有块的解密
ECB(电子密码本)模式最基础的加密模式,直接将明文块加密成密文块,没有额外的处理。主要特点:
- 相同的明文块会产生相同的密文块
- 加密和解密都可以并行处理
- 需要填充
- 安全性较低,不推荐用于大多数场景
CFB(密码反馈)模式将块密码转换为流密码,可以逐位或逐字节加密。加密时,先加密前一个密文块(初始使用IV),将结果与当前明文块进行XOR得到密文。特点:
- 不需要填充
- 支持实时加密
- 错误会传播
- 加密不能并行,解密可以并行
OFB(输出反馈)模式类似CFB,但是加密前一个密文块的结果直接用作下一个块的输入,与明文进行XOR。特点:
- 不需要填充
- 加密解密使用相同操作
- 可以预先生成密钥流
- 不会产生错误传播
CTR(计数器)模式使用递增的计数器值进行加密,将结果与明文XOR得到密文。特点:
- 支持并行处理
- 不需要填充
- 可以随机访问
- 安全性高,但需要确保计数器值不重复
GCM(伽罗瓦/计数器)模式GCM是一种认证加密模式,结合了CTR模式的加密和GHASH的认证功能。特点:
- 提供数据加密和认证
- 支持附加认证数据(AAD)
- 可并行处理
- 生成认证标签验证数据完整性
- 不需要填充