资讯动态

AES 与 SM4:两套对称加密标准的原理、对比与在线实践

发布时间:2026/8/11 16:28:48 来源:尧图企业网站定制
对称加密是现代信息安全的基石。你每天都在用它——HTTPS 流量、Wi-Fi 密码、手机磁盘加密、银行通信底层都跑着对称密码算法。而在所有对称算法中AES 和 SM4 是绕不开的两个名字。这篇文章讲清楚两件事AES 和 SM4 各自的原理与设计差异以及实际工程中该怎么选。一、AES全球通用标准AESAdvanced Encryption Standard是美国国家标准与技术研究院NIST于 2001 年发布的分组密码标准对应 FIPS 197。它取代了老旧的 DES是目前全球最广泛使用的对称加密算法。核心参数分组大小128 位16 字节密钥长度128 / 192 / 256 位三档可选轮数10 / 12 / 14 轮对应三档密钥长度结构Substitution-Permutation NetworkSPNAES 的加密过程是多次轮换每轮包含四个操作字节替换SubBytes、行移位ShiftRows、列混淆MixColumns、轮密钥加AddRoundKey。最后一轮省略列混淆。密钥长度的选择128 位常规商业应用性能与安全性平衡192 位较少使用过渡档位256 位政府/军事级数据抗量子攻击余量更大在 NIST SP 800-131A 框架下AES-128 在可预见的未来仍然是安全的。二、SM4中国国密标准SM4 是中国国家密码管理局发布的分组密码算法属于 GM/T 系列国密标准。2012 年被确立为国家密码行业标准2016 年成为国家标准GB/T 32907-2016。核心参数分组大小128 位16 字节密钥长度固定 128 位轮数32 轮结构Feistel 网络与 AES 的 SPN 不同SM4 的设计借鉴了 Feistel 结构每轮只处理半组数据64 位通过轮函数 F 将左右半组交叉混合。32 轮迭代后输出密文。SM4 的典型应用场景国密 TLS/SSL如金融行业的 HTTPS 国密改造WAPI 无线局域网安全电子政务系统加密金融行业合规加密在中国境内或面向中国用户的业务中SM4 往往不是可选而是必须——监管合规要求。三、AES vs SM4逐项对比维度AESSM4标准FIPS 197国际标准GM/T 0002 / GB/T 32907中国国密标准分组大小128 位128 位密钥长度128 / 192 / 256 位固定 128 位结构SPN替换-置换网络Feistel 网络轮数10 / 12 / 14 轮32 轮硬件加速广泛支持AES-NI 指令集逐步完善中覆盖面不及 AES性能现代 CPU 上极快软件实现略慢差距在缩小合规性全球通用中国国密合规必需国际认可全球国际化推进中ISO/IEC 18033-3 已收录设计结构差异是最本质的区别AES 用 SPN 结构每轮处理整个 128 位分组扩散更快轮数可以更少10-14 轮就够。SM4 用 Feistel 结构每轮只处理半个分组扩散速度较慢需要更多轮次32 轮来达到同等级别的安全性。两种结构在密码学上都是成熟的设计安全性都经过充分论证。四、加密模式两者通用AES 和 SM4 都是分组密码每次只加密一个 16 字节的块。实际数据通常远超 16 字节需要用加密模式把多个块串起来。两者支持的模式几乎完全一致常用模式对比模式是否需要 IV并行性错误传播安全性ECB否高无低不推荐CBC是16 字节低块级传播高推荐CTR是计数器初值高无高推荐GCM是高无高带认证ECB 为什么不推荐相同的明文块在相同密钥下总是生成相同的密文块。如果加密一张图片密文里仍然能看到图片的轮廓。经典的ECB 企鹅图就是最好的说明。CBC 为什么推荐每个块在加密前先和前一个密文块做 XOR第一个块和 IV 做 XOR。这样即使明文中有重复模式密文也不会暴露。IV 管理要点CBC 模式的 IV 必须是加密安全的随机数且每次加密唯一、不可复用CTR 模式的计数器必须永不重复不是随机数是递增的IV 可以明文传输不需要保密但必须保证唯一性五、填充模式分组密码要求数据长度是分组的整数倍。不够怎么办补齐。填充模式标准文档方案适用场景PKCS#7RFC 5652填充 n 个值为 n 的字节通用最常用PKCS#5RFC 8018与 PKCS#7 相同仅 8 字节分组的历史命名兼容旧系统ZeroPadding行业实践填充 0x00二进制数据ISO/IEC 7816-4ISO 标准首字节 0x80 后跟 0x00智能卡NoPadding-不填充明文已对齐实际开发中 99% 的情况用 PKCS#7 就行。AES 和 SM4 的分组都是 16 字节PKCS#7 和 PKCS#5 在这里完全等价。六、实际选型建议什么时候用 AES面向全球用户的产品需要硬件加速的高吞吐场景AES-NI 指令集不涉及中国国密合规要求需要更大密钥空间256 位什么时候用 SM4中国境内金融、政务、医疗等合规场景产品需要通过国密认证或等保测评与国密 TLS/SSL 体系对接客户明确要求使用国密算法两者共存的情况很多国内金融系统的做法是对外接口用 SM4合规内部数据处理用 AES性能。也有系统同时支持两套算法由调用方按需选择。七、在线工具理解了原理实际用的时候不需要手写代码验证。我做了两个免费在线工具可以直接在浏览器里体验 AES 和 SM4 的加解密AES 加密/解密工具https://0x0bee.com/zh-CN/tools/aes支持 128 / 192 / 256 位密钥支持 ECB / CBC / CTR / GCM 等模式支持 PKCS#7 / ZeroPadding / ISO 7816-4 填充密文输出 Hex 或 Base64可一键生成随机密钥和 IVSM4 加密/解密工具https://0x0bee.com/zh-CN/tools/sm4支持 ECB / CBC 模式支持 PKCS#5/PKCS#7 填充密钥和 IV 支持 Hex 或 Base64 输入可一键生成随机密钥两个工具都是纯前端计算数据不上传服务器可以放心用于验证和学习。总结AES 和 SM4 都是 128 位分组密码安全性都经过充分论证AES 是国际标准密钥档位多硬件加速广泛SM4 是中国国密标准合规场景必需加密模式的选择CBC/CTR 优于 ECB比算法本身的选择更重要IV 管理是工程实践中最容易出错的地方——唯一、不可复用是底线实际选型看合规要求全球通用选 AES国密合规选 SM4两者可以共存有问题欢迎评论区交流。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价