14、SM4分组密码算法

SM4分组密码算法

2012年3月,国家密码管理局正式公布了包含SM4分组密码算法。与DES和AES算法类似,SM4是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。SM4算法加/解密算法是对合运算,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。加密算法与密钥扩展算法均采用32轮非线性迭代结构(Feistel),以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。

14、SM4分组密码算法_第1张图片

14、SM4分组密码算法_第2张图片

注:明文、密文、密钥128位

数据处理单位为:字节(8位)、字(32位)
 

1、参数及基本运算

密钥及密钥参量:SM4分组密码算法的加密密钥长度为128bit,表示为MK=(MK0,MK1,MK2,MK3),其中MKi(i=1,2,3)为32bit。

轮密钥:(rk0,rk1,···,rk31),其中rki(i=0,1,···,31)为32bit,轮密钥由加密密钥生成。

系统参数:FK=(FK1,FK2,FK3,FK4),其中FKi(i=0,1,···,3),

固定参数:CK=(CK0,CK1,···,CK31),用于密钥扩展算法,均为32bit。

2、非对称Feistel结构

  • 与DES有相似性,采用Feistel结构
  • 非对称:SM4中参与交换的两个数据块的长度是不相等的

14、SM4分组密码算法_第3张图片

3、密钥扩展:生成32个32位的轮密钥

常数FK:给定

14、SM4分组密码算法_第4张图片

固定参数CK:32位,32个

14、SM4分组密码算法_第5张图片

i:第i个参数;j:参数第j个字节

密钥扩展算法

14、SM4分组密码算法_第6张图片

4、加密:轮函数--字合成变换T

进行32轮轮函数运算得到密文。

14、SM4分组密码算法_第7张图片

轮函数包含以下部件:

S:高4位为行号,低4位为列号,交叉点为输出

14、SM4分组密码算法_第8张图片

非线性变换τ:4个S盒并置构成(4*8),混淆作用

14、SM4分组密码算法_第9张图片

字线性变换L变换:32位输入32位输出,扩散作用

字合成变换T

5、加解密

加密

14、SM4分组密码算法_第10张图片

解密

14、SM4分组密码算法_第11张图片

注:

如有错误、侵权,请联系笔者更改、删除!!!

你可能感兴趣的:(一,密码,密码学)