网站左侧分类菜单怎么做,wordpress瀑布流图文,最新新闻热点事件简短,linux 做网站前面的文章介绍了SM4算法的C语言实现#xff0c;源码可见文章#xff1a;SM4国密对称算法源码解析_10点43的博客-CSDN博客_sm4代码。
本文将会介绍SM4算法原理#xff0c;这部分可能会比较枯燥#xff0c;但数学要求也不是太高。 目录
1.概述
2. 参数产生
3. 轮函数
4…前面的文章介绍了SM4算法的C语言实现源码可见文章SM4国密对称算法源码解析_10点43的博客-CSDN博客_sm4代码。
本文将会介绍SM4算法原理这部分可能会比较枯燥但数学要求也不是太高。 目录
1.概述
2. 参数产生
3. 轮函数
4. 密钥扩展
5. 加密/解密过程 1.概述 2012年3月国家密码管理局正式公布了包含SM4分组密码算法在内的《祖冲之序列密码算法》等6项密码行业标准。与DES和AES算法类似SM4算法是一种分组密码算法。其分组长度为128bit密钥长度也为128bit。加密算法与密钥扩展算法均采用32轮非线性迭代结构以字32位为单位进行加密运算每一次迭代运算均为一轮变换函数F。SM4算法加/解密算法的结构相同只是使用轮密钥相反其中解密轮密钥是加密轮密钥的逆序。SM4算法的整体结构如图所示 SM4算法结构图 2. 参数产生 字节由8位2进制数表示字由32位2进制数表示S盒为固定的8bit输入和输出置换加密密钥长度为128bit表示为其中MKi (i0,1,2,3)为字。轮密钥表示为rkii0,1,2.....,31为字。FK(FK0,FK1,FK2,FK3)为系统参数CK(CK0,CK1,.....,CK31)为固定参数都为字。3. 轮函数
整体的加密函数为 其中T为一个合成置换由非线性变换和线性变换复合而成。
非线性变换由4个平行的S盒构成S盒的数据均采用16进制。线性变换公式如下其中B为非线性变换得到的字4. 密钥扩展
已知加密密钥系统参数FK(FK0,FK1,FK2,FK3)固定参数CK(CK0,CK1,.....,CK31).
rki为轮密钥轮密钥由加密密钥生成。
首先
然后对i0,1,2,...,31: 改变换与加密中的T变换基本相同只是将其中的线性变换改为由于系统参数个固定参数是已知的轮密钥即可求得。 5. 加密/解密过程
加密最后一轮变换时输出为 最后输出是加密的反序解密时只是将轮密钥的使用顺序进行逆向进行。