SM4 国密加密与解密
使用中国国家标准 SM4(国密)加密和解密文本。
解密时还需要这个密码。输入的任何内容都不会离开本页。
OpenSSL 的默认值是 10,000。任何次数都可以:次数越多,密码越难猜;解密时必须使用相同的次数。
使用 OpenSSL 时的常用选择。需要 IV;填充为完整的分组。
openssl enc -sm4-cbc -pbkdf2 -iter 10000 -a -AOpenSSL 会提示输入密码;把文本粘贴进去,或加上 -in 和 -out 文件。
SM4 原名 SMS4,是中国国家标准分组密码(GB/T 32907-2016),密钥 128 位,分组 16 字节;自 2021 年起它也被纳入 ISO/IEC 18033-3。遵循中国商用密码规定的系统,会在其他系统使用 AES 的地方使用 SM4,例如银行和政务系统。在这里可以用 SM4 加密和解密文本,默认 CBC 模式,也可选 ECB、CTR、CFB 或 OFB,可以使用 openssl enc -pbkdf2 格式的密码,或你自己的 32 个 hex 字符的密钥和 IV。SM4 在浏览器中运行,文本和密钥不会离开你的设备;免费,无需注册。
如何用 SM4 加密和解密文本
- 选择“加密”或“解密”。输入要加密的文本,或粘贴要解密的 Base64 或 hex 文本,格式会自动识别。
- 输入密码(点“生成”可得到一个强密码),或切换到“密钥和 IV(hex)”,输入或生成 32 个 hex 字符的密钥和 32 个 hex 字符的 IV(ECB 没有 IV)。
- 选择模式——除非数据是用其他模式生成的,否则选 CBC。只有当数据加密时没有使用 PKCS#7 填充,才打开“无填充”。
- 复制或下载结果。在“OpenSSL 等效命令”下,页面会显示实现相同操作的 openssl 命令,其中不含你的密码。
功能
- SM4(GB/T 32907-2016),128 位密钥
- CBC、ECB、CTR、CFB、OFB 模式;PKCS#7 填充或不填充
- openssl enc -pbkdf2 格式的密码模式,可由 openssl enc -sm4-cbc 读取
- 每种模式都给出对应的 openssl 命令
- 密钥和 IV 模式:32 个 hex 字符的密钥和 IV,可手动输入或自动生成
- 输入输出均支持 Base64 或 hex;可复制、下载结果或点“交换”
隐私安全吗?
是的。SM4 在浏览器内的 WebAssembly 中运行,密码由浏览器的 Web Crypto 进行密钥拉伸;你的文本、密码和密钥不会上传或保存。
常见问题
SM4 安全吗?
安全。目前没有针对完整 32 轮 SM4 的已知实际攻击,其 128 位密钥提供的安全性与 AES-128 大致相当。与本站其他密码一样,薄弱环节在于密码——请使用足够长的随机密码。
能用 OpenSSL 解密吗?
可以,需要 OpenSSL 3:echo 'U2FsdGVkX1…' | openssl enc -d -sm4-cbc -pbkdf2 -iter 10000 -a -A(随后 OpenSSL 会提示输入密码)。其他模式用 -sm4-ecb、-sm4-ctr、-sm4-cfb 或 -sm4-ofb;密钥和 IV 模式下用 -K <32 个 hex 字符> -iv <32 个 hex 字符> 代替 -pbkdf2 -iter。如果你的 openssl 不接受 sm4-cbc,说明它在编译时没有包含 SM4。
支持 SM4-GCM 吗?
不支持。SM4 提供 CBC、ECB、CTR、CFB 和 OFB,也就是 openssl enc 具备的模式;它们都不能检测文本是否被改动。GCM 可以在 AES 页面使用。
也能做 SM2 或 SM3 吗?
不能。SM2 是公钥算法,SM3 是哈希函数;本页只做 SM4 对称加密。哈希方面,“哈希计算”工具提供 MD5 和 SHA 系列,不包括 SM3。