GB/T 32907 (SM4) 规范详解
GB/T 32907《信息安全技术 SM4 分组密码算法》由国家密码管理局发布,是中国商用密码分组加密标准。SM4 的密钥长度和分组长度均为 128 位(16 字节),结构为 Feistel 网络,32 轮迭代。
算法结构
SM4 加密过程:将 128 位明文分为 4 个 32 位字 X0, X1, X2, X3;32 轮迭代,每轮 Xi+4 = Xi XOR T(Xi+1 XOR Xi+2 XOR Xi+3 XOR RKi),其中 T 是合成置换(S 盒替换 + 线性变换 L);轮密钥 RKi 由 128 位主密钥通过密钥扩展算法生成,使用另一组 S 盒和常数 CK;最后做反序变换输出密文。解密使用相同的算法但轮密钥逆序。
工作模式
SM4 的常用工作模式:ECB 每块独立加密,不推荐;CBC 需 16 字节 IV,适合数据加密;CTR 计数器模式,可并行;GCM 认证加密模式,提供 AEAD。国密规范 GM/T 0006 定义了 SM4 的 CBC、CTR、GCM 等模式的使用方法。PBOC 3.0 金融 IC 卡规范中 SM4-CBC 用于数据加密,SM4 的 ECB 模式仅用于密钥派生。
与 AES 对比
SM4 和 AES-128 的密钥长度和分组长度相同(128 位),但结构不同:AES 是 SPN(替换-置换网络),SM4 是 Feistel 网络;AES 的 S 盒和 SM4 的 S 盒不同;AES 支持 192/256 位密钥而 SM4 固定 128 位。在智能卡领域,国密芯片通常同时支持 SM4 和 AES,软件层面选择算法即可切换。本站 对称加密工具 支持在线 SM4-CBC 加解密。