分组密码算法ShengLooog设计原理详解
分组密码算法ShengLooog设计原理详解
ShengLooog(升龙)为基于Feistel结构设计的分组密码算法,分组大小为128比特,密钥长度分别为128,192,256比特,对应的算法轮数分别为32,36,40,其可以分别表示为ShengLooog128/32,ShengLooog192/36,ShengLooog256/40。
第1个S盒S0
第2个S盒S1
ShengLooog算法的密钥扩展算法(KeyExtend)如下图所示:
当|K|=128,密钥扩展算法为KeyExtend128。
当|K|=192,密钥扩展算法为KeyExtend192。
当|K|=256,密钥扩展算法为KeyExtend256。
ShengLooog128算法的加密算法(Encrypt)如下图所示:
ShengLooog128算法的加密算法(Decrypt)如下图所示:
FFFF为ShengLooog算法的轮函数,其可以分为3个步骤(轮密钥加,S盒替换,P置换)。
Z=FFFF(L,RK)=P(SBOX(L⊕RK))
(1)轮密钥加(RKA),如下图所示:
(2)S盒替换(S0,S1) ,如下图所示:
(3)P置换 ,如下图所示:
其中X0,X1,Y0,Y1,Z0,Z1均为32位字,xi和yi(i=0,...,7)均为字节(8比特)。
S0和S1的密码学指标均已达到最佳或接近最佳。LLLL0和LLLL1均为对合线性变换,分支数为4(5为最优),通过LLLL0和LLLL1复合变换设计的线性扩散层P置换的分支数为5,已达到最优值。故P置换与S盒相互配合, ShengLooog算法能够抵抗常见的密码攻击方法(差分分析和线性分析等)。