SM4 是中国国家密码管理局发布的一种分组密码算法,也被称为国密 SM4 算法。它是一种对称加密算法,用于替代 DES 和 AES 等传统的对称加密算法。其中“SM”代表“商密”,即用于商用的、不涉及国家秘密的密码技术。
SM4 算法具有以下特点:
- 安全性高:SM4 使用 32 轮迭代结构和非线性 S 盒,结合代换、线性变换和异或等操作来保证安全性。
- 高效性能:SM4 既适合硬件实现,也适合软件实现,能够在不同平台上快速完成加密和解密。
- 国密标准:SM4 是中国商用密码体系中的核心对称加密算法,被广泛应用于国内信息安全场景。
- 固定密钥长度:SM4 使用 128 bits 密钥和 128 bits 分组,当前页面也按这一标准进行本地实现。
填充模式
- None:不填充
- PKCS7:填充字符串由一个字节序列组成,每个字节填充该字节序列的长度
- Zeros:填充字符串由设置为零的字节组成
- ANSIX923:填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节均填充数字零
- ISO10126:填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节填充随机数据
分组对称加密算法有些运算模式要求明文数据的字节长度必须是其块大小的整倍数,因此在加密明文数据之前我们必须对明文数据进行填充。