SM4 算法原理

SM4 算法原理这篇文章介绍SM4算法原理,这部分可能会比较枯燥,但数学要求也不是太高。可以参考的百度文档:https://wenku.baidu.com/view/e66938055acfa1c7aa00cca7.html?from=search1.概述2012年3月,国家密码管理局正式公布了包含SM4分组密码算法在内的《祖冲之序列密码算法》等6项密码行业标准。与DES和AES算法类似,SM4算法…

这篇文章介绍SM4算法原理,这部分可能会比较枯燥,但数学要求也不是太高。

可以参考的百度文档:

https://wenku.baidu.com/view/e66938055acfa1c7aa00cca7.html?from=search

1.概述
2012年3月,国家密码管理局正式公布了包含SM4分组密码算法在内的《祖冲之序列密码算法》等6项密码行业标准。与DES和AES算法类似,SM4算法是一种分组密码算法。其分组长度为128bit,密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构,以字(32位)为单位进行加密运算,每一次迭代运算均为一轮变换函数F。SM4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。SM4算法的整体结构如图所示:

SM4算法结构图:

SM4 算法原理

2. 参数产生
1. 字节由8位2进制数表示,字由32位2进制数表示;

2. S盒为固定的8bit输入和输出置换;

3. 加密密钥长度为128bit,表示为,其中MKi (i=0,1,2,3)为字。轮密钥表示为rki(i=0,1,2…..,31)为字。FK=(FK0,FK1,FK2,FK3)为系统参数,CK=(CK0,CK1,…..,CK31)为固定参数,都为字。

SM4 算法原理

3. 轮函数
整体的加密函数为:

SM4 算法原理

其中T为一个合成置换,由非线性变换和线性变换复合而成。

非线性变换由4个平行的S盒构成,S盒的数据均采用16进制。
线性变换公式如下,其中B为非线性变换得到的字

SM4 算法原理

SM4 算法原理
4. 密钥扩展
已知加密密钥,系统参数FK=(FK0,FK1,FK2,FK3),固定参数CK=(CK0,CK1,…..,CK31).

rki为轮密钥,轮密钥由加密密钥生成。

首先,

SM4 算法原理

然后对i=0,1,2,…,31:

      SM4 算法原理

改变换与加密中的T变换基本相同,只是将其中的线性变换改为:,由于系统参数个固定参数是已知的,轮密钥即可求得。

SM4 算法原理

5. 加密/解密过程
加密最后一轮变换时,输出为:

SM4 算法原理

最后输出是加密的反序,解密时只是将轮密钥的使用顺序进行逆向进行。
 

今天的文章SM4 算法原理分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/32194.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注