国密 SM4 / SM3 工具

SM3 哈希与 SM4 加解密(ECB/CBC,PKCS#7),内置标准向量一键自检,本地运行密钥不上传。

商用密码体系里,SM3 对标 SHA-256(输出 256 位摘要),SM4 对标 AES-128(128 位分组与密钥、32 轮 Feistel 结构)。金融、政务与物联网领域的国内系统普遍要求使用国密算法,而可用的在线工具要么要装环境、要么把密钥发到别人服务器——对密钥这种敏感信息不可接受。

本工具的 SM3 与 SM4 全部按标准文档手写实现、打包在页面里本地运行:SM3 输入任意文本实时出摘要;SM4 支持 ECB 与 CBC 模式、PKCS#7 填充,输入可以是 UTF-8 文本或十六进制,输出支持 Hex 与 Base64。密码实现最大的风险是悄悄算错,所以页面常驻「标准向量自检」按钮:一键验证 SM3("abc") 与 SM4 官方向量,通过与否直接显示,不通过会明确告诉你别用本页结果。

ECB 与 CBC 怎么选

ECB 每个分组独立加密,相同明文分组产出相同密文——加密图片这类有结构的数据会泄漏轮廓(著名的「企鹅图」问题),只适合加密短小且无结构的值(单个密钥字段、token)。CBC 引入初始向量做链式混淆,相同明文不再产出相同密文,是一般数据的默认选择;代价是 IV 必须随机且不可复用,否则前缀相同的明文会泄漏关系。

SM4 只保密,不防篡改

SM4 与 AES 一样只提供机密性,不是认证加密:攻击者改不了「明文」,但可以交换、重放、截断密文块,解密端可能察觉(填充校验失败)也可能察觉不到。需要完整性的场景,标准做法是叠加 MAC——例如 SM3-HMAC,或者使用国密体系里的 SM2 签名。本页工具彼此组合即可完成:先 SM4 后对密文再做 SM3-HMAC。

常见问题

标准向量自检是在验证什么?
验证页面里的实现是否与国家标准一致。SM3 用标准文档里的 "abc" 向量(66c7f0f4…),SM4 用官方测试向量(明文/密钥均为 0123456789abcdeffedcba9876543210 时密文为 681edf34…)并做解密回环。这个实现在本站构建时还与 OpenSSL 3 的 sm3/sm4 做过全量交叉验证(含多分组与中文长文)。
SM2 在哪?为什么这个工具只有 SM3/SM4?
SM2 是椭圆曲线公钥算法(对标 RSA/ECDSA),涉及密钥对生成、签名与密钥交换,交互复杂度高,与本页的对称工具是两类需求。SM3/SM4 是纯函数式运算,适合在浏览器即时完成。SM2 工具在本站规划中。
密钥安全吗?
本页没有任何网络请求,密钥、明文、密文都不离开浏览器,也不写入本地存储。但请记住浏览器环境的边界:输入的密钥会出现在页面内存里,公用计算机与被监控的终端不适合处理生产密钥。

相关工具