在线 SM4 国密分组密码加解密:支持 ECB/CBC 模式、PKCS#7 填充、密钥随机生成与显隐切换。16 字节密钥 128 位分组,等价 AES-128 的国密替代。浏览器本地运行,密文不外传。
摘要:SM4 国密分组密码在线加解密:ECB/CBC 模式、密钥随机生成、显隐切换,AES-128 的国密替代。
本地工具可在 DevTools → Network 搜索输入内容,通常不会出现在请求中。
使用指南
SM4 是国密分组对称加密(对标 AES),密钥和输出都是 128 位。国产系统改造里的数据加密通常指定它。本工具在浏览器本地完成加解密——明文和密钥全程不出本机,适合联调时快速验证密文能否对上。
1. 怎么用
- 输入明文和 SM4 密钥(16 字节,常用 32 位十六进制;可带 0x / 空格)。
- 选择模式(ECB / CBC;CBC 必须填 16 字节 IV,缺省会报错)。
- 选择密文编码(hex 或 Base64),与对端约定一致后再加密 / 解密。
2. 和对端对不上时的排查顺序
- 先核对密钥:长度(16 字节)、格式(hex vs utf8 直填)、前后空格 / 0x。
- 再核对模式与 IV:ECB 无 IV;CBC 的 IV 必填且与加密端一致(本页缺 IV 直接报错)。
- 最后核对密文编码:本页可选 hex / Base64,三方约定必须一致。
3. 一个模式选择的常识
ECB 模式因为相同明文块产出相同密文块(泄漏结构特征),只应用来测试对接正确性;真实业务应使用 CBC 或更安全的模式,并让 IV 每次随机。联调时对不上密文是常态——先看密钥再看模式最后看编码,这个顺序能排除 90% 的对接失败。SM4 与 AES-128 强度相当,选择同样由合规要求决定。
4. 什么场景必须 SM4,AES 什么时候还行
判断标准只有一条:对端/合规要求。等保、密评、政务金融行业规范点名的加密模块必须用国密算法族,此时数据加密就是 SM4(GB/T 32907),AES-128 再强也不合规。反之,没有合规要求的中外混合系统里,AES 仍是最大公约数——强行给不要求国密的链路套 SM4 只会缩小可用的客户端生态。灰色地带(比如产品要同时卖国内外)的做法是算法可配置:一套代码,按部署地选择 SM4 或 AES,密钥管理层保持同构。
5. 对接 SM4 接口的检查单
- 密钥格式:16 字节——对端给的是 32 位 hex 还是 24 位 base64(18 字节解码,注意不是 16)?先确认再解析。
- 模式与 IV:ECB 无 IV;CBC 的 IV 是 16 字节且两端必须一致,不少实现对 IV 用固定值(等于变相 ECB)。
- padding:PKCS#7 是默认约定,也有实现规定明文必须手动补齐到 16 字节整(padding=None),错一个字节全文对不上。
- 密文编码:hex(64 字符/块)还是 base64——肉眼能分,但要当成接口契约确认,别靠猜。
- 第一次联调先跑标准测试向量:固定密钥 + 固定明文,两端各加密一次,比对密文。向量都对不上的问题一定在格式约定层,不在算法层。
6. 标准号谱系:GM/T 0002、GB/T 32907 与 RFC 8998 的关系
SM4 的身份演变是国密算法的典型路径:2006 年算法公开,2012 年以行业标准 GM/T 0002-2012 定名,2016 年升级为国家标准 GB/T 32907-2016,2017 年进入国际标准 ISO/IEC 18033-3:2017(与 AES 同列分组密码附录)。看到这三个号,说的是同一个算法。国际协议侧,RFC 8998(2021)把 SM2/SM3/SM4 组合定义为 TLS 1.3 的 ShangMi(SM)密码套件——握手用 SM2、密钥导出用 SM3、记录层用 SM4-GCM/CCM。本页验证的是算法层的 ECB/CBC(联调密钥与编码),不是 ShangMi 记录层 GCM,也不能代替 TLCP 握手。完整号表见[《标准号速查》](/blog/sm-standard-numbers-explained),选型见[《国密算法入门》](/blog/guomi-algorithms-guide);密钥交换与签名见 [SM2](/tools/sm2-encrypt),摘要见 [SM3](/tools/sm3-hash)。
7. 本页模式边界:ECB/CBC,不是 GCM
工具支持 ECB 与 CBC(CBC 必须提供 16 字节 IV),填充为 PKCS#7,密文可选 hex/Base64。RFC 8998 的 TLS_SM4_GCM_SM3 / CCM 套件以及部分网关的国密 HTTPS,记录加密走的是带认证的 GCM/CCM——与本页 CBC 密文不互通。联调应用层 SM4-CBC 接口时用本页;验收 ShangMi TLS 时请在协议栈侧抓握手套件名(可用 [HAR 查看器](/tools/har-viewer)),不要用本页密文当套件证据。联调清单亦可对照[《SM2/SM3/SM4 实战》](/blog/sm-crypto-practical-guide)。
常见问题
定位相同:都是分组密码。SM4 分组/密钥固定 128 位(对标 AES-128),AES 支持可选密钥长度。选择只看一条——对端与合规要求:等保、密评、政务金融点名的加密模块必须用 SM4;无合规要求的系统里 AES 仍是最大公约数,同时面向国内外的产品可做成算法可配置。性能上硬件加速的 AES 更快,SM4 在国密硬件(密码卡/芯片)中也有加速。
联调与业务数据优先用 CBC(每次随机 IV):ECB 对相同分组输出相同密文,会泄露数据模式(经典企鹅图案例),只适合连通性测试;还要防对端把 IV 写成固定值——那等于变相 ECB。CBC 缺 IV 时本工具会直接报错,不会静默用空向量。
128 位密钥的 32 位十六进制字符串(如 0123456789abcdeffedcba9876543210)。CBC 模式还需要 32 位 hex 的 IV(缺 IV 会直接报错)。可点「生成密钥」用浏览器安全随机源生成。密钥可带 0x 前缀或中间空格,工具会先规范化再运算。联调对不上时按「密钥 → 模式/IV → 编码」的顺序排查,能排除大部分对接失败。
页面可选 hex(默认)或 Base64,加解密两端与对端约定必须一致。同一明文同一密钥下,两种编码只是同一密文字节的不同写法;拿 hex 去解 Base64(或反过来)会失败。padding 也是要确认的契约:PKCS#7 是默认约定,个别实现要求明文手动补齐到 16 字节整(padding=None),错一个字节全文对不上。
本页仅支持 ECB/CBC + PKCS#7,用于应用层联调。RFC 8998 定义了 TLS 1.3 的 ShangMi 套件——握手用 SM2、密钥导出用 SM3、记录层用 SM4-GCM/CCM,与本页 CBC 密文不互通,协议握手请在国密 TLS 栈侧验证。标准号谱系:SM4 在 2012 年定为行业标准 GM/T 0002-2012,2016 年升为国标 GB/T 32907-2016,2017 年进入 ISO/IEC 18033-3:2017,三个号说的是同一个算法。
加解密全部在浏览器本地完成,明文与密钥全程不出本机。本页定位是学习验证与短数据联调(几 KB 内);大文件加密请分块或用专门的加密库,超长文本在浏览器 UI 里会卡顿。
相关工具
相关文章
国密算法实战指南:SM2、SM3、SM4 怎么选、怎么对接、怎么排查
SM2/SM3/SM4 国密算法的使用场景与选型:对称加密选 SM4、哈希选 SM3、签名加密选 SM2。含 C1C3C2/C1C2C3、hex/Base64、CBC IV 等高频联调坑的排查顺序,全程配套浏览器本地工具。
国密算法入门:SM2/SM3/SM4/SM9/ZUC 是什么、谁在用、怎么落地
国密算法(商用密码)入门:SM2/SM3/SM4/SM9/ZUC 定位与用途、与 RSA/SHA/AES 对应、选型决策树、TLCP 与 RFC 8998 边界、等保密评驱动力,以及浏览器本地工具能验证什么、不能代替什么。
国密标准号速查:GM/T 0004、GB/T 32907 与 RFC 8998 到底是什么关系
一张表解码国密要求里成堆的标准号:GM/T 与 GB/T 新旧对应、ISO/IEC 收录、RFC 8998 ShangMi 套件与 TLCP(GB/T 38636)两条协议线的边界,以及集成文档该引用哪个号。