祖冲之算法(ZUC

您所在的位置:网站首页 算法的语言 祖冲之算法(ZUC

祖冲之算法(ZUC

2024-07-16 11:33| 来源: 网络整理| 查看: 265

祖冲之算法 1、算法原理

算法整体结构分为上中下三层。上层为线性反馈移位寄存器LFSR,中层为比特重组BR,下层为非线性函数F。

在这里插入图片描述

(1)线性反馈移位寄存器

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