国密算法系列之对称分组加密算法SM4

国密系列算法中的SM4为对称分组加密算法,在信息安全领域中用于对消息进行加密,保护消息的私密性。
国际标准的常用对称分组加密算法有DES,AES等。
本文采用图解的方式介绍SM4算法。

SM4算法图解

整体流程

SM4算法的块长度为128位,**长度也为128位,加密过程如以下动画所示,解密过程和加密过程结构相同,仅轮**逆序使用。
国密算法系列之对称分组加密算法SM4

轮函数

从上图看出,**扩展和加密过程中,都用到了轮函数Z=F(A,B,C,D,E),其中ABCDEZ均为长度为4字节的字,轮函数的结构如下图所示:
国密算法系列之对称分组加密算法SM4

τ变换

τ变换为轮函数中的非线性变换过程,即将AA的四个字节并行进行S盒替换,以字节0xEF为例, 它被替换为S盒中的第E行,第F列对应的值0x84,SM4的S盒如下:
国密算法系列之对称分组加密算法SM4

L变换

L变换为为轮函数中的线性变换过程,对于加密过程的轮函数,L变换为:

L(BB)=BB(BB<<<2)(BB<<<10)(BB<<<18)(BB<<<24)

对于**扩展过程的轮函数,L’变换为:
L(BB)=BB(BB<<<13)(BB<<<23)