国密SM4

在线国密SM4加密解密工具,支持ECB/CBC两种模式,纯浏览器端实现,数据不上传服务器。

SM4加解密
CBC 推荐
ECB 慎用
关于 SM4 国密算法

SM4(原称 SMS4)是中国国家密码管理局于2006年发布的商用分组密码算法标准,标准号为 GM/T 0002-2012。SM4 是对称加密算法,采用128位密钥和128位分组长度,经过32轮非线性迭代运算,提供高强度的数据加密保护。

算法参数

密钥长度:128位(16字节) / 分组长度:128位(16字节) / 迭代轮数:32轮 / 结构:Feistel-like

SM4 vs AES

两者均为128位分组密码。SM4使用32轮Feistel-like结构,S-box实现更简单;AES使用10/12/14轮SPN结构(取决于密钥长度)。安全性均达到商用密码要求。

应用场景

SM4广泛应用于WAPI无线局域网标准、SSL/TLS国密套件、金融IC卡、社保卡、电子政务等国家商用密码领域。

加密模式

标准SM4支持ECB(电子密码本)和CBC(密码分组链接)两种模式。CBC模式需初始向量IV,安全性更高;ECB模式简单但相同明文产生相同密文。

📌 安全提示:所有SM4加解密操作均在浏览器本地使用JavaScript完成,密钥和数据不会上传到任何服务器,请放心使用。

使用指南

1. 选择模式

推荐使用CBC模式,需要同时设置密钥和IV;ECB模式只需密钥。

2. 输入密钥

输入32位十六进制字符(16字节),如 0123456789abcdeffedcba9876543210,或点击"生成密钥"随机生成。

3. 输入数据

选择输入类型后输入明文或密文。加密时输入文本或HEX,解密时输入加密后的HEX或Base64数据。

4. 选择输出格式

加密结果可选HEX或Base64格式输出,解密后的明文将以UTF-8文本显示。

5. 执行操作

点击"加密"或"解密"按钮,结果会显示在结果框中,可使用"复制结果"按钮拷贝。

6. 互换与清空

"互换"按钮交换输入/输出内容,"清空"按钮重置所有,"示例"按钮填入测试数据。

常见问题 (FAQ)
Q: SM4和AES有什么区别?哪个更安全?
SM4和AES都是128位分组密码,安全性等级相当。SM4采用32轮Feistel-like结构,AES-128采用10轮SPN结构。两者分别是中国和国际标准的商用密码算法,在实际应用中均已通过严格的安全分析。SM4的优势在于它是中国国家标准,在国内合规场景中必须使用。
Q: 为什么加密后的结果比原文长?
SM4是分组密码,每次加密16字节。当数据长度不是16的倍数时,PKCS7填充会在末尾补齐到16字节。因此即使只有1字节数据,加密后也会有16字节,解密后再去除填充恢复原始长度。
Q: ECB和CBC模式有什么区别?
ECB(电子密码本模式)将数据分成独立块分别加密,相同明文块产生相同密文块,安全性较低。CBC(密码分组链接模式)每个明文块先与前一块密文异或再加密,需要初始向量IV,相同明文因IV不同产生不同密文,推荐优先使用CBC模式。
Q: 密钥和IV有什么要求?
SM4密钥固定为128位(16字节),以32位十六进制字符表示。IV也是128位(16字节),CBC模式必须提供。建议使用工具生成的随机密钥和IV,避免使用有规律或常见的字符串作为密钥。
Q: 解密时提示"填充无效"是什么原因?
通常是由于密钥不正确导致的。即使密钥只有一位差异,解密结果也会完全错误,PKCS7填充校验就会失败。请确认密钥、IV和密文数据是否正确,以及加密/解密时使用的模式和输出格式是否一致。
Q: 这个工具数据会上传服务器吗?
不会。所有加解密运算完全在浏览器本地使用JavaScript实现,密钥和数据均不会离开您的浏览器。您可以断网后仍然正常使用本工具。