2、MK1,MK2,MK3),其中MKi(i=0,1,2,3)为字。轮密钥表示为(rk0,rk1,…,rk31),其中rki(i=0,…,31)为字。轮密钥由加密密钥生成。FK=(FK0,FK1,FK2,FK3)为系统参数,CK=(CK0,CK1,…,CK31)为固定参数,用于密钥扩展算法,其中FKi(i=0,…,3)、CKi(i=0,…,31)为字。2.轮函数F本算法采用非线性迭代结构,以字为单位进行加密运算,称一次迭代运算为一轮变换。设输入为324,轮密钥为32,则轮函数F为:(X0,X1,X2,X3)∈(Z2)rk∈Z2F(X,X,X,X,rk)=X⊕T(X⊕X⊕X
3、⊕rk)0123012312.1合成置换T3232T:Z→Z,是一个可逆变换,由非线性变换τ和线性变换L复合而成,即T(.)=L(τ(.))。222.1.1非线性变换ττ由4个并行的S盒构成。8484设输入为A=(a,a,a,a)∈(Z),输出为B=(b,b,b,b)∈(Z),则0123201232(b,b,b,b)=τ(A)=(Sbox(a),Sbox(a),Sbox(a),Sbox(a))012301232.1.2线性变换L3232非线性变换τ的输出是线性变换L的输入。设输入为B∈Z,输出为C∈Z,则22C=L(B)=B⊕(B<<<)2⊕(B<<<10)⊕(B<<
4、<18)⊕(B<<<24)2.2S盒S盒中数据均采用16进制表示。0123456789abcdef0d690e9fecce13db716b614c228fb2c0512b679a762abe04c3aa4413264986069929c4250f491ef987a33540b43edcfac623e4b31ca9c908e89580df94fa758f3fa644707a7fcf37317ba83593c19e6854fa85686b81b27164da8bf8eb0f4b70569d3561e240e5e6358d1a225227c3b012178877d40046
5、579fd327524c3602e7a0c4c89e8eabf8ad240c738b5a3f7f2cef96115a19e0ae5da49b341a55ad933230f58cb1e3a1df6e22e8266ca60c02923ab0d534e6fbd5db3745defd8e2f03ff6a726d6c5b51c8d1baf92bbddbc7f11d95c411f105ad8d0ac13188a5cd7bbd2d74d012b8e5b4b0e8969974a0c96777e65b9f109c56ec684f18f07dec3adc4d2079ee5f3ed7cb3
6、948例:输入‘ef’,则经S盒后的值为表中第e行和第f列的值,Sbox(‘ef’)=‘84’。23.加/解密算法定义反序变换R为:32R(A0,A1,A2,A3)=(A3,A2,A1,A0),Ai∈Z2,i=3,2,1,0。324324设明文输入为(X,X,X,X)∈(Z),密文输出为(Y,Y,Y,Y)∈(Z),轮密钥012320123232为rk∈Z,i=2,1,0,...,31。则本算法的加密变换为:i2X=F(X,X,X,X,rk)=X⊕T(X⊕X⊕X⊕rk,)i=1,0,...,.13i+4ii+1i+2i+3iii+1i+2i+3i(Y0,Y1,Y2,Y3
7、)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)。本算法的解密变换与加密变换结构相同,不同的仅是轮密钥的使用顺序。加密时轮密钥的使用顺序为:(rk0,rk1,…,rk31)解密时轮密钥的使用顺序为:(rk31,rk30,…,rk0)4.密钥扩展算法本算法中加密算法的轮密钥由加密密钥通过密钥扩展算法生成。32加密密钥MK=(MK0,MK1,MK2,MK3),MKi∈Z2,i=0,1,2,3;3232令Ki∈Z2,i=0,1,…,35,轮密钥为rki∈Z2,i=1,0,...,31,则轮密钥生成方法为:首先,(K0,K1,K2