首页/安全/加密与证书速查/AES 密钥长度 128/192/256 对照
加密算法基础95 条

AES 密钥长度 128/192/256 对照

AES 支持三种密钥长度,轮数分别为 10/12/14 轮;AES-128 与 AES-256 在 TLS 与存储场景中使用广泛,安全性差异与性能开销需按场景权衡。

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

AES 密钥长度怎么选

AES 支持 128、192、256 位三种密钥长度,对应 10、12、14 轮迭代与 11、13、15 组轮密钥。AES-128 与 AES-256 是实际主流:前者在 TLS 与常规数据加密中普遍使用,后者用于要求更高强度或长期保护的场景;AES-192 使用较少,多出现在兼容个别标准时。安全性差异远小于实现与密钥管理的差异。

基本信息

可选长度128 / 192 / 256 位
轮数10 / 12 / 14 轮,随密钥长度增加
轮密钥密钥扩展产生 11 / 13 / 15 组
安全强度分别约等于 128 / 192 / 256 位经典安全强度
硬件加速AES-NI 与 ARM 密码扩展支持全部三种长度
选型建议服务器侧有加速时 128 与 256 差距很小,按合规要求选择

典型使用场景

  • TLS 套件:TLS 1.3 提供 AES-128-GCM 与 AES-256-GCM 两个套件
  • 磁盘加密:LUKS 与 BitLocker 常提供 AES-256-XTS 选项
  • 文件与备份加密:归档工具普遍支持 128 与 256 两种选择
  • 合规场景:等保与行业规范有时明确要求 256 位强度
  • 性能敏感场景:高并发服务端在实测后可能选择 128 位以节省 CPU

生成与对比

生成与对比
# 对比两种密钥长度的吞吐(有 AES-NI 时差距通常很小)
openssl speed -elapsed -evp aes-128-cbc
openssl speed -elapsed -evp aes-256-cbc
# 用同一份明文分别加密,比较密文长度(长度相同,差别只在密钥)
openssl enc -aes-128-cbc -pbkdf2 -salt -in plain.txt -out a128.enc
openssl enc -aes-256-cbc -pbkdf2 -salt -in plain.txt -out a256.enc
ls -l a128.enc a256.enc

三种长度对照

长度轮数轮密钥组数常见用途
AES-12810 轮11 组TLS 会话、常规数据加密
AES-19212 轮13 组较少使用,兼容个别标准要求
AES-25614 轮15 组长期数据保护、全盘加密、合规要求
有 AES-NI 指令集的 CPU 上,128 位与 256 位的性能差距通常很小;在无硬件加速的老设备或纯软件实现上差距会放大。是否值得上 256 位,取决于合规要求与实测吞吐,而不是「越长越好」的直觉。
换密钥长度不等于提升存量数据的安全等级:已有密文仍由原密钥长度保护,需要解密后用新长度重新加密并设计迁移窗口。只改加密命令对新数据生效,对历史数据无效。

易错点

  • 以为 256 位能补救方案缺陷:IV 复用、nonce 重用或密钥管理不当,任何长度都无法挽回
  • 切换到 256 位却不迁移存量数据:老密文仍以原长度保存,风险敞口不变
  • 忽略性能实测:在无硬件加速的设备上盲目上 256 位,可能带来明显的 CPU 与延迟开销
  • 把密钥长度与分组长度混淆:AES 分组恒为 128 位,256 位指的只是密钥长度
  • 在配置文件里写错长度标识(如 aes-256-cbc 写成 aes192),导致与其他系统对接解密失败

数据来源与参考

  • FIPS 197(第 5 章密钥扩展与轮数)
  • OpenSSL 官方文档 openssl-enc(1)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌