祖冲之算法(ZUC |
您所在的位置:网站首页 › 算法的语言 › 祖冲之算法(ZUC |
祖冲之算法
1、算法原理
算法整体结构分为上中下三层。上层为线性反馈移位寄存器LFSR,中层为比特重组BR,下层为非线性函数F。 LFSR包括16个31比特寄存器单元s0s15~。LFSR的运行模式有两种:初始化模式和工作模式。 初始化模式下,LFSR接收一个31比特字u,u由非线性函数F的32比特输出W舍弃最低位(右移一位)得到。初始化模式下LFSR进行如下操作: LFSRWithInitialisationMode(u) { v = (2^15)*s[15]+(2^17)*s[13]+(2^21)*s[10]+(2^20)*s[4]+(1+2^8)*s[0] mod (2^31-1); s[16]=(v+u) mod (2^31-1); if (s[16]==0) s[16]=2^31-1; (s[1],s[2],...,s[16])-→(s[0],s[1],...,s[15]); }工作模式下LFSR无输入,进行如下操作: LFSRWithWorkMode() { s[16] = (2^15)*s[15]+(2^17)*s[13]+(2^21)*s[10]+(2^20)*s[4]+(1+2^8)*s[0] mod (2^31-1); if (s[16]==0) s[16]=2^31-1; (s[1],s[2],...,s[16])-→(s[0],s[1],...,s[15]); } (2)比特重组BR设BR的输入为LFSR的s[0]~s[15],输出为4个32比特字X0,X1,X2,X3。计算过程如下: BitReconstruction() //H表示截取高16位,L表示截取低16位,||表示连接 { X0=(s[15]~H)||(s[14]~L); X1=(s[11]~L)||(s[9]~H); X2=(s[7]~L)||(s[5]~H); X3=(s[2]~L)||(s[0]~H); } (3)非线性函数F非线性函数的输入为3个32比特字X0,X1,X2,输出为一个32比特字W。计算过程如下: F(X0,X1,X2) { W=(X0^R1)+R2; W1=R1+X1; W2=R2^x2; R1=S(L1((W1~L)||(W2~H))); R2=S(L2((W2~L)||(W1~H))); } // |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |