首页/安全/加密与证书速查/分组密码与流密码的差异
加密算法基础95 条

分组密码与流密码的差异

分组密码按固定长度块处理数据、通常需要填充;流密码按位或字节生成密钥流与明文异或。二者的错误传播、并行能力与完整性设计不同。

加密与证书速查安全更新于 2026-10-13

两类密码的差异

分组密码按固定长度的块处理数据,通常需要填充,把长数据切块后逐块变换;流密码按位或字节生成密钥流,与明文逐位异或得到密文。两者的错误传播、并行能力与完整性设计都不同:分组模式中 CBC 的错误会扩散、CTR 不会,流密码的错误位置对应且不扩散,但两者在缺失认证时都不提供完整性保护。

基本信息

分组密码AES、SM4、DES/3DES,按块处理
流密码ChaCha20、ZUC、RC4,按位或字节处理
填充分组模式需要,流模式不需要
完整性两者都需另加认证或使用认证加密模式

典型使用场景

  • 网络协议选型:优先使用认证加密模式而非裸模式
  • 磁盘与块设备加密:使用不需要认证的专用模式,靠上层校验
  • 嵌入式与无加速设备:优先选择软件实现效率高的流密码
  • 移动通信:使用标准规定的流密码算法
  • 迁移评估:判断现有代码是按块还是按流处理的

选型参考

选型参考
网络协议:认证加密(AES-GCM、ChaCha20-Poly1305、SM4-GCM)
磁盘与块设备:XTS(不含认证,靠上层校验)
嵌入式无 AES 加速:ChaCha20-Poly1305
移动通信:ZUC 系列算法

两类密码对照

维度分组密码流密码
处理单位固定分组(64 或 128 位)位或字节流
是否需要填充需要(CBC、ECB 等)不需要
错误传播CBC 扩散,CTR 不扩散位置对应,不扩散
并行与随机访问CTR 与 GCM 可并行可并行
流式用法(CTR、CFB、OFB)在同一密钥下重复使用初始值或计数器,会直接造成密钥流复用;这类错误的危害比 CBC 中初始值使用不当更严重。

选型检查项

  • 协议是否要求认证:要求认证就选认证加密模式
  • 是否需要在任意位置随机读取:需要则选 CTR 或流密码类构造
  • 是否有硬件加速:有 AES 加速时优先分组算法
  • 密钥与初始值如何管理:必须确认唯一性与生命周期
现代协议普遍把加密与认证封装成认证加密模式;裸用分组或流密码时必须自行处理初始值管理、填充与完整性校验,出错概率高。

易错点

  • 把流密码当分组密码用或反之:会破坏接口假设,例如对计数器模式的密文做按块重排会直接破坏数据
  • 认为流密码的错误不扩散更安全:攻击者可控地篡改比特同样是风险
  • 在同一密钥下重复使用初始值:流式用法会复用密钥流,明文可被恢复
  • 以为分组密码自带完整性:除认证加密模式外,裸模式一律需要额外认证
  • 在需要随机读取的场景选错模式:CBC 加密方向无法并行,会造成性能与实现复杂度问题

数据来源与参考

  • NIST SP 800-38A(分组密码模式)
  • RFC 8439(ChaCha20)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌