SM3 哈希生成器

完全在浏览器中计算文本或文件的 SM3 摘要 —— GB/T 32905-2016,中国国家密码哈希标准。普通 SM3 或带密钥的 HMAC-SM3,hex 或 Base64 输出,并有 SHA-256 并排对比通道。不会上传任何数据。
算法摘要
SM3–
SHA-256 (对比通道,仅文本来源)–
详情–
命令行交叉验证 —— 本页对文件给出的摘要与 openssl dgst -sm3 file.bin(OpenSSL 1.1.1+)及 gmssl dgst -sm3 file.bin 逐字节一致。HMAC-SM3 用文本密钥时:openssl dgst -sm3 -hmac <key>。
自检
用 GB/T 32905-2016 官方附录 A 向量、GB/T 15852.2(ISO/IEC 9797-2)HMAC-SM3 向量、一次 1000 字节分块增量运行、两个示例池、对照浏览器自带编码器的 Base64 通道,以及反向路径(非法 hex 密钥必须被拒绝)重跑本页引擎。不会向任何地方发送数据。
什么是 SM3?
一句话:SM3 是中国国家标准化机构的密码哈希 —— 与 SHA-256 同属一个结构家族的 256 位 Merkle–Damgård 哈希,但拥有自己的初始值、轮常数、布尔函数和 68 字的消息扩展,发布为 GM/T 0004-2012,后为 GB/T 32905-2016。
SM3 与 SHA-256 一览
方面SM3SHA-256
摘要 / 分组 / 字大小256 / 512 / 32 位256 / 512 / 32 位
压缩轮数6464
消息扩展W[0..67] + 派生的 W'[0..63],P1 置换W[0..63],带 σ0/σ1 旋转
轮常数两个常数 T0..15=0x79CC4519、T16..63=0x7A879D8A,按 j 旋转64 个常数 K[0..63]
布尔函数FF/GG 在第 16 轮切换全程 Ch/Maj
字节序大端大端
发布时间2010 年(GM/T 0004-2012;GB/T 32905-2016)2001 年(FIPS 180-2)
国际地位已纳入 ISO/IEC 10118-3:2018FIPS 180-4

同一副骨架,不同的肌肉:两种算法都把消息切成 512 位分组,在八个 32 位寄存器上跑 64 轮混合,但每个常数、每个旋转量与消息扩展步骤都不同,因此对同一输入产生完全无关的摘要。SM3("abc") 是 66c7f0f4...8f4ba8e0,而 SHA-256("abc") 是 ba7816bf...f20015ad —— 用“示例”按钮试试两者。

“国家标准”意味着更安全吗?

不 —— 那也不是它的使命。SM3 提供与 SHA-256 相当的安全性:256 位摘要,没有已知的可行碰撞或原像攻击。SM3 存在的理由是套件独立性与合规:中国商用密码(“SM”系列)法规要求在受认证的行业 —— 银行、政务、电信基础设施 —— 使用国产套件,让整条技术栈(哈希、签名、密码)都置于统一的国家标准流程而非国外标准之下。在这个语境之外,SHA-256 与 SM3 强度上可以互换;当你的对手方、监管机构或协议(例如带 RFC 8998 SM 密码套件的 TLS 1.3)要求时,选 SM3。

SM3 在 SM 套件中的位置
  • SM3(本页)—— 哈希。也是 SM2 签名内部的摘要(ZA 值)和 SM2 加密的 KDF。
  • SM4 —— 128 位分组密码(可理解为“国产版 AES”),ECB/CBC 见本族的 SM4 页面。
  • SM2 —— sm2p256v1 曲线上的椭圆曲线签名与加密算法,构建在 SM3 之上。
  • SM9 —— 标识密码:你的邮箱地址就是你的公钥。
常见错误
  • 用 SM3 哈希口令。SM3 和 SHA-256 一样是快速通用哈希 —— GPU 上每秒可猜数十亿次。口令存储请用 口令哈希生成器里的 bcrypt、scrypt、Argon2id 或 PBKDF2。
  • 以为旧式 C1C2C3 顺序在这里有影响。密文顺序是 SM2 的话题;SM3 没有这种讲究,其输出永远是 32 字节。
  • 混淆 GM/T 0004-2012 与 GB/T 32905-2016。同一算法、同一测试向量 —— GM/T 是行业标准发布文本,GB/T 是国家标准。ISO/IEC 10118-3:2018 同样收录了它。
  • 信任,但要验证。本页自检会重放标准自带的附录向量;如果它没有显示“0 失败”,就不要相信输出。
常见问题

OpenSSL 里有 SM3 吗?有 —— OpenSSL 1.1.1 及更高版本:openssl dgst -sm3 file,HMAC 走 -hmac。GmSSL(中国分支)支持得更早。本页两者都不需要:算法就在你的浏览器里运行。

HMAC-SM3 是干什么用的?消息认证:一种还能证明“是谁发的”的摘要,因为只有持有共享密钥的人才能算出它。标准化于 GB/T 15852.2 / ISO/IEC 9797-2。密钥可为任意长度;超过 64 字节会先做一次哈希。

为什么文件通道不显示 SHA-256 对比?对比用的是浏览器内置的 WebCrypto 一次性摘要,它要求整个输入都在内存里 —— 文本没问题,200 MB 分块流入的文件不行。SM3 本身是增量计算的,在本页没有这个限制。

能拿到 Base64 形式的摘要吗?能 —— 在“输出格式”里选。每个结果的两条通道都可以复制,或下载成一份小文本报告。