SM4

SM4

SM4的前身是SMS4(后改名),即使SMS4跟SM4是同一个算法

算法结构

  • 分组算法,分组长度为128比特,密钥长度为128 比特,输入输出都是128bit
  • 加密算法与密钥扩展算法均采用非线性迭代结构,运算轮数均为32轮。
  • 数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
  • 以字节(8位)和字(32位)为单位进行数据处理

完整过程

前置知识

字:长度为32比特的字符串。

128bit = 4字,以四个字为单位(128bit)来进行运算,8个16进制的比特串=1字

加密

加密算法的运算过程如下:

  • 将128bit的明文分成4个32bit的字X1,X2,X3,X4
  • 进行32轮的轮操作
  • 对最后得到的4个字进行反序变换,即得到128bit的密文

加密过程中:迭代 Xi+4

也就是每一轮的四个X如何计算得到?

迭代运算,对明文扩展:已知X0 - X3【明文】,对这些X与当前的轮密钥rki进行某种运算F。去求出X4 - X35

这其中每一轮用到了F(X,rk),但这里的T是什么?

为得到Xi+4 ,用到的合成变换T

非线性变换示例

密钥扩展:轮密钥rk的生成过程

轮密钥由输入的128bit密钥生成,来生成32轮的轮密钥

即,用MK去计算,得到32轮的rki

前置知识

密钥拓展的算法

注:得到的第一轮的子密钥,也是下一轮密钥运算的K4。

用的是T‘,因为相比于T,这里的线性变换算法L’是有所变化的。

例子

posted @ 2022-05-02 10:47  Dinesaw  阅读(1567)  评论(0编辑  收藏  举报