⽆线局域⽹密码算法(SM4)分组加密算法:明⽂和密⽂分组长度128⽐特
结构:⼴义 Feistel结构,基本操作单位32⽐特
SMS4加/解密算法
加密算法:
⾸先,将128⽐特明⽂分为4个32⽐特字(Z232中元素),分别赋值给四个寄存器A,B,C,D(D为最⾼)
高考祝福语2022最火简短句子进⾏32轮F运算,设每轮输⼊为寄存器当前状态值(D,C,B,A)∈(Z232)和轮密钥为rk i∈Z232,则轮函数F为:
F(D,C,B,A,rk i)=A⊕T(B⊕C⊕D⊕rk i)
将寄存器最右边字A的值移出,⾼三个字顺次右移32位,F函数的输出赋值给最左边的寄存器字D。
32轮的输出(X35X34X33X32)进⾏反序变换R然后输出密⽂。
当兵报名R(X35X34X33X32)=(X32X33X34X35)
轮迭代
节日由来⼴义Feistel结构
轮函数F
输⼊寄存器值(X i+3,X i+2,X i+1,X i) rki和轮密钥:
Xi+4=F(X i+3,X i+2,X i+1,X i;rk i)=X⊕T(X i+3⊕X i+2⊕X i+1⊕X i⊕rk i)
Z232->Z232 i=0,1,..31
合成置换T
T:是⼀个可逆变换,由⾮线性变换τ和线性变换L复合⽽成,即T(.)=L(τ(.))
恢组词语⾮线性变换τ由4个并⾏的S盒构成,设输⼊Y=(y3,y2,y1,y0)∈(Z28)4,输出z=z(z3,z2,z1,z0)∈(Z28)4
则(z3,z2,z1,z0)∈τ(Y)=(Sbox(y3),Sbox(y2),Sbox(y1)Sbox(y0))
线性变化L
复必泰有望成为国内加强针设输⼊为Z232,输出为W∈Z232,则
W=L(Y)=Y⊕(Y<<<2)⊕(Y<<<10)⊕(Y<<<18)⊕(Y<<<24)
S盒:
SMS4秘钥编排算法
输⼊:
1)加密密钥MK长度为128bit,MK=(MK0,MK1,MK2,MK3),其中MK i(i=0,1,2,3)为字;
2)FK=(FK0,FK1,FK2,FK3)为系统参数,CK=(CK0,CK1,CK2,...CK31)为固定参数,⽤于密钥扩展算法,其中FK i(i=0,1,2,3),CK i(i=0,1,...31)均为字输出:
轮密钥表⽰为(rk0,rk1,...rk31),其中rk i(i=0,1,...31)均为字
说明:系统参数FK的取值,采⽤16进制表⽰为:FK0=(A3B1BAC6) FK1=(56AA3350) FK2=(677D9197) FK3=(B27022DC)
固定参数CK i的取值⽅法:设ck i,j为CKi的第j字节(i=0,1,…,31;j=0,1,2,3) 即ck i=(ck i,0,ck i,1,ck i,2,ck i,3)∈(Z28)4 则ck i,j=(4i+7j)(mod256)
32个固定参数CK i,其16进制表⽰为:
呆若木鸡成语故事密钥扩展⽅法:
加密密钥MK=(MK0,MK1,MK2,MK3),MK i∈Z232(i=0,1,2,3)
轮密钥为rk i∈Z232,i=0,1,2,...,31 其⽣成⽅法为:
1)(K0,K1,K2,K3)=(MK0⊕FK0,MK1⊕FK1,MK2⊕FK2,MK3⊕FK3)
2)对i=0,1,2,...,31 循环的做rk i=K i+4=K i⊕T'(K i+1⊕K i+2⊕K i+3⊕CK i)
说明:T'变换与加密算函数中的T基本相同,只将其中的线性变换L修改为:L'(Y)=Y⊕(<<<13)⊕(Y<<<23)
本算法的解密变换与加密变换结构相同,不同的仅是轮密钥的使⽤顺序。
加密时:(rk0,rk1,...,rk31)
解密时:(rk31,...,rk1,rk0)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论