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

分组密码与流密码的差异

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

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

两类密码对照

维度分组密码(如 AES、SM4、3DES)流密码(如 ChaCha20、ZUC、RC4)
处理单位固定分组(64/128 位)位/字节流
是否需要填充需要(CBC/ECB 等)不需要
错误传播CBC 会扩散,CTR 不扩散位置对应,不扩散
并行与随机访问CTR/GCM 可并行,CBC 加密不可并行可并行(ChaCha20)
完整性需另加 MAC 或用 AEAD 模式同样需另加 MAC 或用 AEAD

选型参考

选型参考
TLS/网络协议:AEAD(AES-GCM、ChaCha20-Poly1305、SM4-GCM)
磁盘/块设备:XTS(无认证,靠上层校验)
嵌入式无 AES 加速:ChaCha20-Poly1305
移动通信:ZUC(128-EEA3/128-EIA3)
现代协议普遍把加密与认证封装成 AEAD;裸用分组或流密码时要自行处理 IV/nonce 管理与完整性。

易错点

  • 把流密码当分组密码用(或反之)会破坏接口假设,例如对 CTR 密文做「按块重排」会直接破坏数据
  • 流密码的错误不扩散不代表安全:攻击者可控改比特同样是风险

数据来源与参考

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