GB/T 32905-2016 SM3 密码杂凑算法

标题:信息安全技术 SM3密码杂凑算法

发布组织:国家密码管理局 / 中国国家标准委

标准编号:GB/T 32905-2016

摘要:SM3 是我国自主设计的密码哈希函数,输出长度为256 bit。广泛用于数字签名、消息认证码、随机数生成等。SM3 的压缩函数包含64轮迭代,安全强度与 SHA-256 相当。

主要特性:

官方下载链接: 国家标准全文公开系统

关联工具: 哈希摘要工具 (SM3)

GB/T 32905 (SM3) 规范详解

GB/T 32905《信息安全技术 SM3 密码杂凑算法》由国家密码管理局发布,是中国商用密码哈希函数标准。SM3 输出 256 位(32 字节)摘要,设计上参考了 SHA-256 但在消息扩展和压缩函数中做了改进,适合国密合规场景使用。

算法流程

SM3 的处理流程:消息填充——将原始消息填充至长度为 512 位的整数倍(与 SHA-256 类似的填充方案,但长度域编码为 64 位大端序);消息扩展——将每 512 位分组扩展为 132 个字 W0-W67 和 W'0-W'63;压缩函数——64 轮迭代,每轮使用消息字、中间变量和布尔函数(FFj, GGj)更新寄存器 A-H;最终拼接 A-H 为 256 位摘要。

与 SHA-256 对比

SM3 和 SHA-256 的输出长度相同(256 位),分组长度相同(512 位),轮数相同(64 轮),但结构不同:SM3 的消息扩展使用不同的移位和异或组合;SM3 的布尔函数 FFj 和 GGj 与 SHA-256 的 Ch/Maj/BigSigma 不同;SM3 的常量表与 SHA-256 不同。这些差异导致 SM3 和 SHA-256 的输出完全不同,互不兼容。

应用场景

SM3 在国密体系中广泛使用:SM2 签名中用于消息摘要预处理;SM4 的 KDF(密钥派生函数)基于 SM3;国密 TLS(GM/T 0024)中替代 SHA-256 做握手摘要和记录 MAC;国密数字证书中用于证书签名。本站 Hash 摘要算法工具 支持在线计算 SM3 摘要值。

← 返回规范索引