国密系列算法中的SM4为对称分组加密算法,在信息安全领域中用于对消息进行加密,保护消息的私密性。
国际标准的常用对称分组加密算法有DES,AES等。
本文采用图解的方式介绍SM4算法。
SM4算法图解
整体流程
SM4算法的块长度为128位,密钥长度也为128位,加密过程如以下动画所示,解密过程和加密过程结构相同,仅轮密钥逆序使用。
轮函数
从上图看出,密钥扩展和加密过程中,都用到了轮函数Z=F(A,B,C,D,E) Z = F ( A , B , C , D , E ),其中ABCDEZ均为长度为4字节的字,轮函数的结构如下图所示:
τ τ变换
τ τ变换为轮函数中的非线性变换过程,即将AA的四个字节并行进行S盒替换,以字节0xEF为例, 它被替换为S盒中的第E行,第F列对应的值0x84,SM4的S盒如下:
L变换
L变换为为轮函数中的线性变换过程,对于加密过程的轮函数,L变换为:
L(BB)=BB⊕(BB<<<2)⊕(BB<<<10)⊕(BB<<<18)⊕(BB<<<24) L ( B B ) = B B ⊕ ( B B <<< 2 ) ⊕ ( B B <<< 10 ) ⊕ ( B B <<< 18 ) ⊕ ( B B <<< 24 )
对于密钥扩展过程的轮函数,L’变换为:
L(BB)=BB⊕(BB<<<13)⊕(BB<<<23) L ( B B ) = B B ⊕ ( B B <<< 13 ) ⊕ ( B B <<< 23 )
版权声明:本文为omfalio1101原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。