一种对输入序列进行多维动态非线性变换的系统和方法

文档序号:6557314阅读:147来源:国知局

专利名称::一种对输入序列进行多维动态非线性变换的系统和方法
技术领域
:本发明涉及伪随机序列技术,更具体地说,涉及一种对输入序列进行多维动态非线性变换的系统和方法。
背景技术
:伪随机序列的理论与应用,从产生到发展,已有二十几年的历史了。伪随机序列的理论在它形成的初期,便在通信、雷达、导航以及密码学等重要的
技术领域
获得了广泛的应用。而在近年来的发展中,它的应用范围远远超过了上述领域,如自动控制、计算机、声学和光学测量、数字式跟踪和测距系统以及数字网络系统的故障检测等。有关此方面的内容可参考文献“杨自强、魏公毅,综述产生伪随机数的若干新方法,数值计算与计算机应用,2001(3)201-216”,“张传林、林立东,伪-随机数发生器及其应用,数值计算与计算机应用,2002(3)188-208”和“胡德文,伪随机整数串与伪随机序列发生的新方法,中国科学(E辑),2000(3)258-264”。在以密码学为基础的信息安全领域中,随机序列扮演着重要的角色密钥的生成、数字签名、认证和鉴别以及各种安全通信协议都离不开高质量的随机序列,可参考文献“王新成、孙宏,高速伪-随机数发生器的设计与实现,计算机工程与应用,2004(11)20-23”。从某种意义上讲,随机序列的安全性确定了整个安全体系的安全性。密码学领域对随机序列的要求很高,从安全的角度来说,真正意义上的随机序列是最可靠的,真正的随机序列是完全不可预测的,随机序列中的任何一个随机数都不可能由其他的数推测得到的。在实际应用中,真正的随机序列只能取自于自然界事件的随机特性。我们常使用的都是伪随机序列。通常伪随机序列发生器是通过算法实现的,由于算法确定,伪随机序列发生器不能生成真正的随机序列。伪随机序列发生器生成的伪随机序列具有或长或短的周期,当伪随机序列发生器的周期足够大时,产生的序列看起来是随机的,因此称为伪随机序列。在此可参考文献“张传林、林立东,伪-随机数发生器及其应用,数值计算与计算机应用,2002(3)188-208”,“王新成、孙宏,高速伪-随机数发生器的设计与实现,计算机工程与应用,2004(11)20-23”和“陈叙、杨万全,一种产生周期任意长伪随机序列的方法,通信保密,2000(4)80-81”。伪随机序列的产生长期以来都是各国学者研究的热点,随着计算机的计算能力的提高和广泛应用,利用计算机来产生伪随机序列成为一种重要的方法,目前,有许多文献讨论如何设计伪随机序列发生器,这些伪随机序列发生器都能够通过多种随机性统计检验。其中比较著名的有线性同余发生器LCG(LinearCongruentialGenerator)、Fibonacci序列发生器、线性反馈移位寄存器LFSR(LinearFeedbackShiftRegister)和二次剩余发生器BBS(Blum,BlumandShubGenerator)等等。这些伪随机序列发生器在实际中得到了广泛的应用,这方面已经有大量的实例,此处不一一列举,可参考文献“胡德文,伪随机整数串与伪随机序列发生的新方法,中国科学(E辑),2000(3)258-264”。但是由伪随机序列发生器产生的伪随机序列仍存在一些重要的基本问题尚待解决。其中,线性同余序列具有长周期相关现象,也就是说,线性同余发生器所得到的伪随机序列其前后两半段是强相关的,并且线性同余序列的最大缺陷是高维不均匀性,即所有线性同余序列都有高维稀疏网络结构。Matteis-Pagnutti(1988,1990)已从理论上证明了所有线性和非线性同余序列都存在长周期相关现象,也证明了所有逆同余序列也都像线性同余序列那样存在长周期相关现象。Fibonacci序列也存在着令人不能容忍的不居中现象,即由前两个数得到的第三个数同时大于或者同时小于前二者,而永不居中;另一个缺点就是显著的序列相关,即取小值的数后面出现也取小值的趋势。有关这方面的内容可参考文献“杨自强、魏公毅,综述产生伪随机数的若干新方法,数值计算与计算机应用,2001(3)201-216”,“Knuth,D.E.,TheArtofComputerProgramming,Vol.2,2nded.AddisonWesley,(1981).”,“L’Ecuyer,P.,EfficientandPortableCombinedRandomNumberGenerators,CommunicationsofACM,316(1988),742-749,774.”,“Matteis,A.D.,Pagnutti,S.,ParallelizationofRandomNumberGeneratorsandLong-RangeCorrelations,NumerischeMathematic,53(1988),595-608.”,“Matteis,A.D.,Pagnutti,S.,Long-RangeCorrelationinLinearandNon-LinearRandomNumberGeneration,ParallelComputing,14(1990),207-210.”和“Tezuka,S.,LatticeStructureofPseudorandomSequencesfromShiftRegisterGenerators,Proceedingsofthe1990WinterSimulationConference,IEEEPress,(1990)”。虽然人们针对这些问题提出了一些改进方法,但未能解决根本问题。例如,线性同余组合发生器优于组成它的任何一个发生器,但是线性同余组合发生器本质上等价于另一个线性同余发生器,因此线性同余组合发生器也具有高维网格结构的特征,可参考文献“杨自强、魏公毅,综述产生伪随机数的若干新方法,数值计算与计算机应用,2001(3)201-216”。现有技术中已提出一种“洗牌算法”,可对当前序列进行动态变换。“洗牌算法”的输入为2i相序列,输出为2i相序列,它是一种对序列进行动态变换的方法。其中所述序列是一个由0到255共256个元素组成的一维数组。“洗牌算法”虽然是针对密码技术提出来的,但也可以应用于对其它随机序列的动态变换,所以在此将其与本发明进行比较。洗牌算法1.弹洗算法Scb(p,q)先将序列0,1,2,…,254,255等分成两子序列0,1,…,126,127和128,129,…254,255,然后将两子序列按q间距交叉重组p次构成新的序列。若最后剩下的元素不足q个时,则只要将剩余部分进行直接交叉。例如Scb(2,3)操作的第一次变换结果是0,1,2,128,129,130,3,4,5,131,132,133,…,123,124,125,251,252,253,126,127,254,255。然后对此新的序列同前一次一样再弹洗一次即可。2.抽洗算法Dcb(p,q)以p、q为前、后边界,从序列0,1,…,p-1,p,…,q,q+1,…,255之中,将其部分抽取出,然后将该部分放回到原序列的头部。完成算法Dcb(p,q)后的结果序列为p,…,q,0,1,,…,p-1,q+1,…255若q<p时,则以p、q为前、后边界,从序列0,1,…,q-1,q,…,p,p+1,…,255之中将其部分抽出,然后将该部分放回到原序列的头部。3.切牌算法Tcb(p)以p为边界将序列0,1,…,p-1,p,p+1,…,255前后交叉。完成算法Tcb(p)后的结果序列为p+1,…,255,0,1,…,p-1,p显然,当q=255(或p=255,q<p)时,抽洗算法Dcb(p,255)实质上就是切牌算法Tcb(p),因此,切牌算法是抽洗算法的特例。必须指出为了叙述方便,在此不失一般性地将初始序列设定为按自然顺序排列的序列,即0,1,…,254,255。显然,对不同的初始序列都可做同样的处理。序列的动态修改算法如下算法的参数是3个i比特(选择i=8)的二进制码字UN0,UN1,UN2UNj=bi-1j,bi-2j,···b1jb0j,j=0,1,2,]]>码位bkj∈{0,1},k=0,1,···,i-1).]]>并且对应于码字的十进制数值DNj=Σk=0i-1bkj×2k,j=0,1,2]]>使用表1中所定义的洗牌指令对当前序列依UN0,UN1和UN2次序分别逐一进行变换。表1由码字所给的序列变换指令集表1中u=mod((j+1),3),v=mod((j+2),3),j=0,1,2,算法Scb(p,q),Dcb(p,q)和Tcb(p)中的参数p和q是指序列中的序号。算法中j=0,1,2.所以要按每一个码字进行循环,一共循环三次。上述“洗牌算法”要按b6j、b7j这两个值的四种不同的情况,选择不同的操作(如表1所示)。“洗牌算法”要实现弹洗算法Scb(p,q)、抽洗算法Dcb(p,q)和切牌算法Tcb(p)这三种操作,三种操作的实现各不相同,因此,“洗牌算法”的步骤繁琐,实现比较复杂,从而使运行速度比较慢。
发明内容针对伪随机序列周期短、相关性强和高维稀疏网格结构等缺陷,以及现有“洗牌算法”步骤繁琐,实现比较复杂,运行速度比较慢等问题,本发明提出了一种用于提高序列随机性的对输入序列进行多维动态非线性变换的系统和方法。本发明解决其技术问题所采用的技术方案是提出一种对输入序列进行多维动态非线性变换的系统,其中包括多维动态非线性变换表部件,用于得到初始多维动态非线性变换表B0;多维动态非线性变换表取值部件,用于从多维动态非线性变换表B0中得到输出值E;多维动态非线性变换表转换部件,以输出值E为参数对多维动态非线性变换表B0进行转换,转换后的多维动态非线性变换表称为B1,将转换后得到的B1作为多维动态非线性变换表部件的下一个初始多维动态非线性变换表B0。在本发明所述的对输入序列进行多维动态非线性变换的系统中,多维动态非线性变换表部件根据输入序列2i得到初始多维动态非线性变换表B0时包括(s201)将i的值分成n份,得到a1、a2、......、an,其中a1+a2+......+an-1+an=i,以2a1、2a2、......、2an作为第1维、第2维、......第n维的长度构造n维非线性变换表;(s202)将O到2i-1共2i个数顺序地填入步骤(s201)中构造的n维非线性变换表中,得到顺序排列的n维动态非线性变换表;(s203)由预定的任一伪随机数发生器根据用作密钥的参数产生2i个服从均匀分布的i比特伪随机数;(s204)以2i个i比特的伪随机数为参数,根据n维动态非线性变换表的转换算法,对步骤(s202)中得到的顺序排列的n维动态非线性变换表进行2i次转换;(s205)得到初始n维动态非线性变换表B0。在本发明所述的对输入序列进行多维动态非线性变换的系统中,所述多维动态非线性变换表取值部件获得输出值包括从输入序列中获得输入值m,将m表示为i比特二进制形式,将m分成n份,分别为a1、a2、......、an比特,其中a1+a2+......+an-1+an=i;接着用bj表示第j份的值,其中1≤j≤n;然后从多维动态非线性变换表B0中得到输出E=B0[b1+1][b2+1]…[bn+1]。在本发明所述的对输入序列进行多维动态非线性变换的系统中,多维动态非线性变换表转换部件对多维动态非线性变换表B0的转换包括将i比特的输出值E分成n份,分别为a1、a2、......、an比特,其中a1+a2+......+an-1+an=i;用cj表示第j份的值,其中1≤j≤n,进行cj=(cj+l)mod(2aj)]]>变换;在多维动态非线性变换表的第j维,将第1层到第cj+1层进行循环交换。本发明另一方面还提出了一种对输入序列进行多维动态非线性变换的方法,输入为2i相序列,输出为2i相序列,i为大于0的整数,该方法包括下列步骤(a)生成初始的多维动态非线性变换表B0;(b)从输入序列中获得输入值m,以m为参数根据基于多维动态非线性变换表B0的取值算法得到输出值E;(c)以E为参数,根据作用于多维动态非线性变换表B0的转换算法对多维动态非线性变换表进行转换,得到转换后的多维动态非线性变换表B1;将转换后得到的B1作为下一次循环的B0;(d)判断输入序列是否结束,如果是则转到步骤(e),否则返回到步骤(b);(e)根据每一次执行所述步骤(b)得到的输出值E生成输出序列。在本发明所述的对输入序列进行多维动态非线性变换的方法中,所述步骤(a)包括(a1)将i的值分成n份,得到a1、a2、......、an,其中a1+a2+......+an-1+an=i,以2a1、2a2、……、2an作为第1维、第2维、……第n维的长度构造多维数组;(a2)将0到2i-1共2i个数顺序地填入步骤(a1)中构造的多维数组中,得到顺序排列的多维动态非线性变换表;(a3)由预定的任一伪随机数发生器根据用作密钥的参数产生2i个服从均匀分布的i比特伪随机数;(a4)以2i个i比特的伪随机数为参数根据多维动态非线性变换表的转换算法,对步骤(a2)中得到的顺序排列的多维动态非线性变换表进行2i次转换;(a5)得到初始多维动态非线性变换表B0。在本发明所述的对输入序列进行多维动态非线性变换的方法中,所述步骤(b)中的获得输入值m包括将输入的二进制序列按i比特的长度划分成基元,按顺序取出一个基元作为输入值m。在本发明所述的对输入序列进行多维动态非线性变换的方法中,所述步骤(b)中的多维动态非线性变换表的取值算法包括将m表示为i比特二进制形式,将m分成n份,分别为a1、a2、……、an比特,其中a1+a2+......+an-1+an=i;用bj表示第j份的值,其中1≤j≤n;然后查多维动态非线性变换表B0,得到输出E=B0[b1+1][b2+1]…[bn+1]。在本发明所述的对输入序列进行多维动态非线性变换的方法中,所述多维动态非线性变换表的转换算法是选择一组能够构成对称群生成系的轮换操作,对多维动态非线性变换表进行转换。所述转换算法包括将i比特的输入参数E分成n份,分别为a1、a2、……、an比特,其中a1+a2+......+an-1+an=i;用cj表示第j份的值,其中1≤j≤n,进行cj=(cj+l)mod(2aj)]]>变换;在多维动态非线性变换表的第j维,将第1层到第cj+1层进行循环交换,(将n维变换表中第一维坐标都为k的所有元素称为第一维第k层,其它维类似)。在本发明所述的对输入序列进行多维动态非线性变换的方法中,所述l是由预定的任一伪随机数发生器根据用作密钥的参数产生的一个服从均匀分布的i比特伪随机数。所述多维动态非线性变换表的第j维的第1层是指多维动态非线性变换表中第j维坐标都为1的所有元素;所述多维动态非线性变换表的第j维的第cj+1层是指多维动态非线性变换表中第j维坐标都为cj+1的所有元素。实施本发明的对输入序列进行多维动态非线性变换的系统和方法,具有以下有益效果1、本发明提出的系统和方法是通过非线性变换表随机进行的,并且非线性变换表也是在随机变换的。这两方面的因素使经过变换后的序列周期大幅增长、相关性锐减、结构更加复杂,从而使得输出序列具有更好的随机性。2、本发明提出的系统和方法简单,在二维转换算法的实现中,可以对行、列的变换进行并行设计在进行行变换的时候,可以使16列的数据同时进行移动;在进行列变换的时候,可以使16行的数据同时进行移动。同理,三维或者是更高维的转换算法同样可以并行实现,这样大大地减少了变换的时间,大幅提高运行速度。因此,不仅能极大地提高输入序列的随机性,还能有效地降低计算复杂度、实现简单、高效。3、本发明提出的系统和方法在输入序列具有均匀、独立性的条件下,输出序列也具有均匀、独立的特性,因此,仅需要输入序列满足均匀、独立性,而对输入序列的产生方法没有任何要求,从而体现出了该系统和方法在应用方面的灵活性。4、本发明提出的系统和方法具有灵活、适应性强的特点。多维动态非线性变换方法既可以二维、三维实现,也可以更高维实现,为算法的设计提供了多种选择;同时i的大小也可以根据实际情况确定,使得本发明应用范围更广泛,从而体现出了该系统和方法在设计方面的灵活性。本发明提出的系统和方法对现有的伪随机序列进行动态非线性变换,使其具有更高的随机性,因此该系统和方法可在通信、雷达、导航以及密码学等需要随机数的领域和行业得到应用。下面将结合附图及实施例对本发明作进一步说明,附图中图1是本发明对输入序列进行多维动态非线性变换的系统结构示意图;图2是本发明对输入序列进行多维动态非线性变换的方法流程图;图3是本发明多维动态非线性变换表的初始化流程图。具体实施例方式如图1所示,是本发明对输入序列进行多维动态非线性变换的系统结构示意图。其中包括多维动态非线性变换表部件、多维动态非线性变换表取值部件和多维动态非线性变换表转换部件。多维动态非线性变换表部件根据输入序列可实现多维动态非线性变换表B0的初始化,其中包括(s201)将i的值分成n份,得到a1、a2、......、an,其中a1+a2+......+an-1+an=i,以2a1、2a2、......、2an作为第1维、第2维、......第n维的长度构造n维非线性变换表;(s202)将0到2i-1共2i个数顺序地填入步骤(s201)中构造的n维非线性变换表中,得到顺序排列的n维动态非线性变换表;(s203)由预定的任一伪随机数发生器根据用作密钥的参数产生2i个服从均匀分布的i比特伪随机数;(s204)以2i个i比特的伪随机数为参数,根据n维动态非线性变换表的转换算法,对步骤(s202)中得到的顺序排列的n维动态非线性变换表进行2i次转换;(s205)得到初始n维动态非线性变换表B0。多维动态非线性变换表取值部件,用于从多维动态非线性变换表B0中得到输出值E。其中得到输出值E的具体过程包括从输入序列中获得输入值m,将m表示为i比特二进制形式,将m分成n份,分别为a1、a2、......、an比特,其中a1+a2+......+an-1+an=i;接着用bj表示第j份的值,其中1≤j≤n;然后从多维动态非线性变换表B0中得到输出E=B0[b1+1][b2+1]…[bn+1]。多维动态非线性变换表转换部件,以输出值E为参数对多维动态非线性变换表B0进行转换,转换后的多维动态非线性变换表称为B1,将转换后得到的B1作为多维动态非线性变换表部件的下一个初始多维动态非线性变换表B0。具体转换过程包括将i比特的输出值E分成n份,分别为a1、a2、......、an比特,其中a1+a2+......+an-1+an=i;用cj表示第j份的值,其中1≤j≤n,进行cj=(cj+l)mod(2aj)]]>变换;在多维动态非线性变换表的第j维,将第1层到第cj+1层进行循环交换。本发明所提出的对输入序列进行多维动态非线性变换的方法,输入为2i相序列,输出为2i相序列。该方法主要包括多维动态非线性变换表、多维动态非线性变换表取值算法和多维动态非线性变换表转换算法。为了叙述方便,在下文中分别简称为多维变换表、多维取值算法和多维转换算法。如图2所示,该变换方法的实现步骤如下所述(1)多维变换表的初始化。如图3所示,多维变换表的初始化过程包括下述步骤在步骤301中,将i的值分成n份,得到a1、a2、……、an,其中a1+a2+......+an-1+an=i,而a1、a2、……、an的取值可随意确定,只要各值的大小相近即可,避免出现过大或过小的数。以2a1,2a2,……,2an作为第1维、第2维、……第n维的长度构造n维数组;在步骤302中,将0到2i-1共2i个数顺序地填入n维动态非线性变换表中得到顺序排列的n维动态非线性变换表;在步骤303中,由预定的任一伪随机数发生器根据用作密钥的参数产生2i个服从均匀分布的i比特伪随机数;在步骤304中,以2i个i比特的伪随机数为参数根据n维动态非线性变换表的转换算法,对顺序排列的n维动态非线性变换表进行2i次转换;在步骤305中,得到初始n维动态非线性变换表B0。(2)获得输入值m和输出值E将输入的二进制序列按i比特的长度划分成基元,按顺序取出一个基元作为输入值m,以m为参数根据多维取值算法得到输出值E;所述多维取值算法的具体操作如下将m表示为i比特二进制形式,将m分成n份,分别为a1,a2,……,an比特,其中a1+a2+......+an-1+an=i,用bj(1≤j≤n)表示第j份的值,然后查多维动态非线性变换表B0得到输出E=B0[b1+1][b2+1]…[bn+1]。(3)对多维变换表进行转换以E为参数根据作用于多维变换表的转换算法对多维变换表B0进行转换,转换后的多维变换表称为B1,将转换后得到的B1作为下一次循环的B0;所述多维转换算法的具体操作如下将i比特的输入参数E分成n份,分别为a1,a2,……,an比特,其中a1+a2+......+an-1+an=i,用cj(1≤j≤n)表示第j份的值,然后做cj=(cj+l)mod(2aj)]]>变换,其中l是由预定的任一伪随机数发生器根据用作密钥的参数产生的一个服从均匀分布的i比特伪随机数。在第j维,将第1层到第cj+1层进行循环交换,其中1≤j≤n。将n维变换表中第一维坐标都为k的所有元素称为第一维第k层,其它维类似。(4)判断输入序列是否结束,如果是则转到步骤(5),否则转到步骤(2);(5)变换结束。本发明中的多维可以是二维、三维、四维或者是更高维。下面详细介绍二维变换表、二维取值算法和二维转换算法。(1)二维变换表Bkp及其初始化以i=8为例,第一步,将i的值分成两份a1=4、a2=4。二维变换表Bkp是一个24=16行、24=16列的二维表;第二步,将0到28-1=255共256个数按行的顺序依次从左到右、从上至下填入二维变换表Bkp中,得到顺序排列的二维变换表Bkp[1][1]=0,Bkp[1][2]=1,……,Bkp[1][16]=15,Bkp[2][1]=16,……,Bkp[2][16]=31,……,Bkp[16][1]=240,……,Bkp[16][16]=255;第三步,由预定的任一伪随机数发生器根据用作密钥的参数产生256个服从均匀分布的8比特伪随机数;第四步,以256个8比特的伪随机数为参数根据二维转换算法,对顺序排列的二维变换表进行256次转换,得到初始二维变换表。(2)二维取值算法Dta(m)二维取值算法Dta(m)完成对输入值m(0≤m≤28-1=255)的非线性变换,其具体算法如下将m表示为8比特二进制形式,取m的高4位和低4位得到b1,b2(0≤b1≤15,0≤b2≤15),然后以b1+1,b2+1为二维坐标在二维变换表Bkp中取得对应元素Bkp[b1+1][b2+1]的值即为输出值E。(3)二维转换算法Dcb(E)二维转换算法Dcb(E)以二维取值算法的输出值E(0≤E≤28-1=255)为参数对二维变换表进行转换,其具体算法如下将E表示为8比特二进制形式,取E的高4位和低4位得到c1,c2(0≤c1≤15,0≤c2≤15),然后做c1=(c1+l)mod(24),c2=(c2+l)mod(24)变换,其中l是由预定的任一伪随机数发生器根据用作密钥的参数产生的一个服从均匀分布的8比特伪随机数。首先,将二维变换表Bkp的第1行到第c1+1行以行为单位依次循环交换,在交换后,原第1行的所有元素移动到第2行相应的位置,即将Bkp[1][j]移到Bkp[2][j](1≤j≤16);原第2行移动到第3行;……原第c1行移动到第c1+1行;原第c1+1行移动到第1行。在移动的过程中每一行的元素从左到右的相对顺序不变。然后,根据同样的方法将二维变换表的第1列到第c2+1列以列为单位依次循环交换,在交换后,原第1列的所有元素移动到第2列相应的位置,即将Bkp[j][1]移到Bkp[j][2](1≤j≤16);原第2列移动到第3列;……原第c2列移动到第c2+1列;原第c2+1列移动到第1列。在移动的过程中每一列的元素从上至下的相对顺序不变。下面进一步介绍三维变换表、三维取值算法和三维转换算法。在二维变换表Bkp、二维取值算法Dta(m)和二维转换算法Dcb(E)的基础上,设计三维变换表Bkt、三维取值算法Tta(m)和三维转换算法Tcb(E)。(1)三维变换表Bkt及其初始化以i=8为例,第一步,将i的值分成三份a1=3、a2=3、a3=2,三维变换表Bkt是一个长23=8、宽23=8、高22=4的三维表;第二步,将0到28-1=255共256个数依次按长、宽、高三维的顺序从小到大填入三维变换表Bkt中,得到顺序排列的三维变换表为Bkt[1][1][1]=0、Bkt[1][1][2]=1、Bkt[1][1][3]=2、Bkt[1][1][4]=3、Bkt[1][2][1]=4……Bkt[1][2][4]=7、Bkt[1][3][1]=8……Bkt[1][8][4]=31、Bkt[2][1][1]=32……Bkt[2][8][4]=63、Bkt[3][1][1]=64……Bkt[8][8][3]=254、Bkt[8][8][4]=255;第三步,由预定的任一伪随机数发生器根据用作密钥的参数产生256个服从均匀分布的8比特伪随机数;第四步,以256个8比特的伪随机数为参数根据三维转换算法,对顺序排列的三维变换表进行256次转换,得到初始三维变换表。(2)三维取值算法Tta(m)三维取值算法Tta(m)完成对输入值m(0≤m≤28-1=255)的非线性变换,其具体算法如下将m表示为8比特二进制形式,取m高3位、中间的3位和低2位得到b1,b2,b3(0≤b1≤7,0≤b2≤7,0≤b3≤3)。然后以b1+1,b2+1,b3+1为三维坐标在三维变换表Bkt中取得对应元素Bkt[b1+1][b2+1][b3+1]的值即为输出值E。(3)三维转换算法Tcb(E)三维转换算法Tcb(E)以三维取值算法的输出值E(0≤E≤28-1=255)为参数对三维变换表进行转换,其具体算法如下将E表示为8比特二进制形式,取E高3位、中间的3位和低2位得到c1,c2,c3(0≤c1≤7,0≤c2≤7,0≤c3≤3),然后做c1=(c1+l)mod(23),c2=(c2+l)mod(23),c3=(c3+l)mod(22)变换,其中l是由预定的任一伪随机数发生器根据用作密钥的参数产生的一个服从均匀分布的8比特伪随机数。将三维变换表中第一维坐标都为j的所有元素称为第一维第j层,其它两维类似。首先,三维转换算法Tcb(E)是将三维变换表Bkt中从第一维第1层到第一维第c1+1层的所有元素以层为单位依次循环交换,在交换后,原第一维第1层的所有元素移动到第2层相应的位置,即将Bkt[1][j][h]移动到Bkt[2][j][h](1≤j≤8,1≤h≤4);原第2层移动到第3层;……原第c1层移动到第c1+1层;原第c1+1层移动到第1层。在移动的过程中每一层中所有元素的相对顺序不变。然后,根据同样的方法将三维变换表Bkt中第二维第1层到第二维第c2+1层以层为单位依次循环交换,在交换后,原第1层的所有元素移动到第2层相应的位置,即将Bkt[j][1][h]移动到Bkt[j][2][h](1≤j≤8,1≤h≤4);原第2层移动到第3层;……原第c2层移动到第c2+1层;原第c2+1层移动到第1层。在移动的过程中每一层中所有元素的相对顺序不变。最后,根据同样的方法将三维变换表Bkt中第三维第1层到第三维第c3+1层以层为单位依次循环交换,在交换后,原第1层的所有元素移动到第2层相应的位置,即将Bkt[j][h][1]移动到Bkt[j][h][2](1≤j≤8,1≤h≤8);原第2层的元素移动到第3层;……原第c3层移动到第c3+1层;原第c3+1层移动到第1层。在移动的过程中每一层中所有元素的相对顺序不变。本发明的优选实施例中,以二维动态非线性变换为例,取i=8。详细说明本发明提出的方法。(1)初始化将i的值分成两份a1=4、a2=4。二维变换表Bkp是一个24=16行、24=16列的二维表,将0到28-1=255共256个数依次按行、列的顺序填入二维表中B0p中,得到顺序排列的二维变换表Bp0=01234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032034205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255]]>由预定的任一伪随机数发生器根据用作密钥的参数产生256个服从均匀分布的8比特伪随机数。以256个服从均匀分布的8比特伪随机数为参数,根据二维转换算法对顺序排列的二维变换表进行256次转换得到初始二维变换表Bp0=8893948390958685808289918781928412012512611512212711811711211412112311911312411640454635424738373234414339334436168173174163170175166165160162169171167161172164152157158147154159150149144146153155151145156148248253254243250255246245240242249251247241252244566162515863545348505759554960522429301926312221161825272317282072777867747970696466737571657668216221222211218223214213208210217219215209220212184189190179180191182181176178185187183177188180136141142131138143134133128130137139135129140132813143101565029117112420020520619520220719819719219420120319919320419610410911090106111102101969810510710397108100232237238227234239230229224226233235231225236228]]>(2)获得输入值m将输入的二进制序列按8比特的长度划分成基元,按顺序取出一个基元作为输入值m=131;获得输出值E以m为参数根据二维取值算法Dta(m),取B0p中第9行第4列的元素可以得到输出E=67;(3)对二维变换表进行转换根据二维转换算法Dcb(E)和E对B0p进行转换,由预定的任一伪随机数发生器根据用作密钥的参数产生的一个服从均匀分布的8比特伪随机数l=6。首先进行行变换,将前11行进行循环交换,将第1行移到第2行、将第2行移到第3行、……将第10行移到第11行、将第11行移到第1行。变换后B0p变为1841891901791861911821811761781851871831771881808893948390958685808289918781928412012512611512212711811711211412112311911312411640454635424738373234414339334436168173174163170175166165160162169171167161172164152157158147154159150149144146153155151145156148248253254243250255246245240242249251247241252244566162515863545348505759554960522429301926312221161825272317282072777867747970696466737571657668216221222211218223214213208210217219215209220212136141142131138143134133128130137139135129140132813143101565029117112420020520619520220719819719219420120319919320419610410911099106111102101969810510710397108100232237238227234239230229224226233235231225236228]]>然后进行列变换,将前10列进行循环交换,将第1列移到第2列、将第2列移到第3列、……将第9列移到第10列、将第10列移到第1列。变换后B0p变为178184189190179186191182181176185187183177188180828893948390958685808991878192841141201251261151221271181171121211231191131241163440454635424738373241433933443616216817317416317017516616516016917116716117216414615215715814715415915014914415315515114515614824224825325424325025524624524024925124724125224450566162515863545348575955496052182429301926312221162527231728206677778677479706964737571657668210216221222211218223214213208217219215209220212130136141142131138143134133128137139135129140132281314310156509117112419420020520619520220719819719220120319919320419698104109110991061111021019610510710397108100226232237238227234239230229224233235231225236228]]>并将转换完成后的二维变换表称为B1p,将转换后的B1p作为下一次循环的B0p;(4)判断输入序列是否输入完毕,如果是则转到步骤(5),否则转到步骤(2);(5)变换结束。本发明提出的系统和方法能对输入序列进行动态非线性变换。该系统和方法不仅使序列周期大幅变长、相关性锐减、结构更复杂,消除了高维稀疏网格结构,而且其变换步骤简单、实现容易、速度快,因此该系统和方法可被用来产生随机性高的伪随机序列。权利要求1.一种对输入序列进行多维动态非线性变换的系统,其特征在于,其中包括多维动态非线性变换表部件,用于得到初始多维动态非线性变换表B0;多维动态非线性变换表取值部件,用于从多维动态非线性变换表B0中得到输出值E;多维动态非线性变换表转换部件,以输出值E为参数对多维动态非线性变换表B0进行转换,转换后的多维动态非线性变换表称为B1,将转换后得到的B1作为多维动态非线性变换表部件的下一个初始多维动态非线性变换表B0。2.根据权利要求1所述的对输入序列进行多维动态非线性变换的系统,其特征在于,多维动态非线性变换表部件根据输入序列2i得到初始多维动态非线性变换表B0时包括下列步骤(s201)将i的值分成n份,得到a1、a2、……、an,其中a1+a2+……+an-1+an=i,以2a1、2a2、……、2an作为第1维、第2维、……第n维的长度构造n维非线性变换表;(s202)将0到2i-1共2i个数顺序地填入步骤(s201)中构造的n维非线性变换表中,得到顺序排列的n维动态非线性变换表;(s203)由预定的任一伪随机数发生器根据用作密钥的参数产生2i个服从均匀分布的i比特伪随机数;(s204)以2i个i比特的伪随机数为参数,根据n维动态非线性变换表的转换算法,对步骤(s202)中得到的顺序排列的n维动态非线性变换表进行2i次转换;(s205)得到初始n维动态非线性变换表B0。3.根据权利要求2所述的对输入序列进行多维动态非线性变换的系统,其特征在于,所述多维动态非线性变换表取值部件获得输出值包括从输入序列中获得输入值m,将m表示为i比特二进制形式,将m分成n份,分别为a1、a2、……、an比特,其中a1+a2+……+an-1+an=i;接着用bj表示第j份的值,其中1≤j≤n;然后从多维动态非线性变换表B0中得到输出E=B0[b1+1][b2+1]…[bn+1]。4.根据权利要求3所述的对输入序列进行多维动态非线性变换的系统,其特征在于,多维动态非线性变换表转换部件对多维动态非线性变换表B0的转换包括将i比特的输出值E分成n份,分别为a1、a2、……、an比特,其中a1+a2+……+an-1+an=i;用cj表示第j份的值,其中1≤j≤n,进行cj=(cj+l)mod(2aj)]]>变换;在多维动态非线性变换表的第j维,将第1层到第cj+1层进行循环交换。5.一种对输入序列进行多维动态非线性变换的方法,输入为2i相序列,输出为2i相序列,i为大于0的整数,其特征在于,该方法包括下列步骤(a)生成初始的多维动态非线性变换表B0;(b)从输入序列中获得输入值m,以m为参数根据基于多维动态非线性变换表B0的取值算法得到输出值E;(c)以E为参数,根据作用于多维动态非线性变换表B0的转换算法对多维动态非线性变换表进行转换,得到转换后的多维动态非线性变换表B1;将转换后得到的B1作为下一次循环的B0;(d)判断输入序列是否结束,如果是则转到步骤(e),否则返回到步骤(b);(e)根据每一次执行所述步骤(b)得到的输出值E生成输出序列。6.根据权利要求5所述的对输入序列进行多维动态非线性变换的方法,其特征在于,所述步骤(a)包括(a1)将i的值分成n份,得到a1、a2、……、an,其中a1+a2+……+an-1+an=i,以2a1、2a2、……、2an作为第1维、第2维、……第n维的长度构造n维非线性变换表;(a2)将0到2i-1共2i个数顺序地填入步骤(a1)中构造的n维非线性变换表中,得到顺序排列的n维动态非线性变换表;(a3)由预定的任一伪随机数发生器根据用作密钥的参数产生2i个服从均匀分布的i比特伪随机数;(a4)以2i个i比特的伪随机数为参数,根据n维动态非线性变换表的转换算法,对步骤(a2)中得到的顺序排列的n维动态非线性变换表进行2i次转换;(a5)得到初始n维动态非线性变换表B0。7.根据权利要求5所述的对输入序列进行多维动态非线性变换的方法,其特征在于,所述步骤(b)中的获得输入值m包括将输入的二进制序列按i比特的长度划分成基元,按顺序取出一个基元作为输入值m。8.根据权利要求5所述的对输入序列进行多维动态非线性变换的方法,其特征在于,所述步骤(b)中的多维动态非线性变换表的取值算法包括将m表示为i比特二进制形式,将m分成n份,分别为a1、a2、……、an比特,其中a1+a2+……+an-1+an=i;接着用bj表示第j份的值,其中1≤j≤n;然后从多维动态非线性变换表B0中得到输出E=B0[b1+1][b2+1]…[bn+1]。9.根据权利要求5或6所述的对输入序列进行多维动态非线性变换的方法,其特征在于,所述多维动态非线性变换表的转换算法是选择一组能够构成对称群生成系的轮换操作,对多维动态非线性变换表进行转换。10.根据权利要求9所述的对输入序列进行多维动态非线性变换的方法,其特征在于,所述转换算法包括将i比特的输入参数E分成n份,分别为a1、a2、……、an比特,其中a1+a2+……+an-1+an=i;用cj表示第j份的值,其中1≤j≤n,进行cj=(cj+l)mod(2aj)]]>变换;在多维动态非线性变换表的第j维,将第1层到第cj+1层进行循环交换。11.根据权利要求9所述的对输入序列进行多维动态非线性变换的方法,其特征在于,所述l是由预定的任一伪随机数发生器根据用作密钥的参数产生的一个服从均匀分布的i比特伪随机数。12.根据权利要求11所述的对输入序列进行多维动态非线性变换的方法,其特征在于,所述多维动态非线性变换表的第j维的第1层是指多维动态非线性变换表中第j维坐标都为1的所有元素;所述多维动态非线性变换表的第j维的第cj+1层是指多维动态非线性变换表中第j维坐标都为cj+1的所有元素。全文摘要本发明涉及一种对输入序列进行多维动态非线性变换的系统和方法,输入为文档编号G06F7/58GK1916837SQ20061006236公开日2007年2月21日申请日期2006年8月28日优先权日2006年8月28日发明者郑志彬,位继伟,胡汉平,王祖喜,吴晓刚,石永,许娅,周麟,朱子奇,卢鹏宇申请人:华中科技大学,华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1