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

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

Info

Publication number
CN1916837A
CN1916837A CN 200610062361 CN200610062361A CN1916837A CN 1916837 A CN1916837 A CN 1916837A CN 200610062361 CN200610062361 CN 200610062361 CN 200610062361 A CN200610062361 A CN 200610062361A CN 1916837 A CN1916837 A CN 1916837A
Authority
CN
China
Prior art keywords
linear transform
dynamic non
dimension
transform table
multidimensional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN 200610062361
Other languages
English (en)
Inventor
郑志彬
位继伟
胡汉平
王祖喜
吴晓刚
石永
许娅
周麟
朱子奇
卢鹏宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Huazhong University of Science and Technology
Original Assignee
Huawei Technologies Co Ltd
Huazhong University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd, Huazhong University of Science and Technology filed Critical Huawei Technologies Co Ltd
Priority to CN 200610062361 priority Critical patent/CN1916837A/zh
Publication of CN1916837A publication Critical patent/CN1916837A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明涉及一种对输入序列进行多维动态非线性变换的系统和方法,输入为2i相序列,输出为2i相序列。该变换系统包括多维动态非线性变换表部件,多维动态非线性变换表取值部件和多维动态非线性变换表转换部件。该变换方法首先完成多维动态非线性变换表B0的初始化;然后在输入序列中获得输入值m,以m为参数根据基于多维动态非线性变换表的取值算法得到输出值E;以E为参数根据作用于多维动态非线性变换表的转换算法对多维动态非线性变换表B0进行转换,转换后的多维动态非线性变换表称为B1;将转换后得到的B1作为下一次循环的B0;判断输入序列是否结束,如果是则结束变换,否则继续获得输入值以继续进行变换。该方法变换简单、实现容易,可用于产生随机性高的伪随机序列。

Description

一种对输入序列进行多维动态非线性变换的系统和方法
技术领域
本发明涉及伪随机序列技术,更具体地说,涉及一种对输入序列进行多维动态非线性变换的系统和方法。
背景技术
伪随机序列的理论与应用,从产生到发展,已有二十几年的历史了。伪随机序列的理论在它形成的初期,便在通信、雷达、导航以及密码学等重要的技术领域获得了广泛的应用。而在近年来的发展中,它的应用范围远远超过了上述领域,如自动控制、计算机、声学和光学测量、数字式跟踪和测距系统以及数字网络系统的故障检测等。有关此方面的内容可参考文献“杨自强、魏公毅,综述:产生伪随机数的若干新方法,数值计算与计算机应用,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(Linear Congruential Generator)、Fibonacci序列发生器、线性反馈移位寄存器LFSR(Linear Feedback Shift Register)和二次剩余发生器BBS(Blum,Blum and Shub Generator)等等。这些伪随机序列发生器在实际中得到了广泛的应用,这方面已经有大量的实例,此处不一一列举,可参考文献“胡德文,伪随机整数串与伪随机序列发生的新方法,中国科学(E辑),2000(3):258-264”。
但是由伪随机序列发生器产生的伪随机序列仍存在一些重要的基本问题尚待解决。其中,线性同余序列具有长周期相关现象,也就是说,线性同余发生器所得到的伪随机序列其前后两半段是强相关的,并且线性同余序列的最大缺陷是高维不均匀性,即所有线性同余序列都有高维稀疏网络结构。Matteis-Pagnutti(1988,1990)已从理论上证明了所有线性和非线性同余序列都存在长周期相关现象,也证明了所有逆同余序列也都像线性同余序列那样存在长周期相关现象。Fibonacci序列也存在着令人不能容忍的不居中现象,即由前两个数得到的第三个数同时大于或者同时小于前二者,而永不居中;另一个缺点就是显著的序列相关,即取小值的数后面出现也取小值的趋势。有关这方面的内容可参考文献“杨自强、魏公毅,综述:产生伪随机数的若干新方法,数值计算与计算机应用,2001(3):201-216”,“Knuth,D.E.,The Art ofComputer Programming,Vol.2,2nd ed.Addison Wesley,(1981).”,“L’Ecuyer,P.,Efficient and Portable Combined Random NumberGenerators,Communications of ACM,31:6(1988),742-749,774.”,“Matteis,A.D.,Pagnutti,S.,Parallelization of Random Number Generators andLong-Range Correlations,Numerische Mathematic,53(1988),595-608.”,“Matteis,A.D.,Pagnutti,S.,Long-Range Correlation in Linear andNon-Linear Random Number Generation,Parallel Computing,14(1990),207-210.”和“Tezuka,S.,Lattice Structure of Pseudorandom Sequencesfrom Shift Register Generators,Proceedings of the 1990 WinterSimulation Conference,IEEE Press,(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,UN2 U Nj = b i - 1 j , b i - 2 j , · · · b 1 j b 0 j , j = 0,1,2 , 码位 b k j ∈ { 0,1 } , k = 0,1 , · · · , i - 1 ) . 并且对应于码字的十进制数值
D Nj = Σ k = 0 i - 1 b k j × 2 k , j = 0,1,2
使用表1中所定义的洗牌指令对当前序列依UN0,UN1和UN2次序分别逐一进行变换。
        表1  由码字所给的序列变换指令集
  操作符     操作     操  作  数
b7 j b6 j
0  0   不做任何操作     没有实际意义
表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.所以要按每一个码字进行循环,一共循环三次。
上述“洗牌算法”要按b6 j、b7 j这两个值的四种不同的情况,选择不同的操作(如表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,进行 c j = ( c j + l ) mod ( 2 a j ) 变换;在多维动态非线性变换表的第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,进行 c j = ( c j + l ) mod ( 2 a j ) 变换;在多维动态非线性变换表的第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,进行 c j = ( c j + l ) mod ( 2 a j ) 变换;在多维动态非线性变换表的第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份的值,然后做 c j = ( c j + l ) mod ( 2 a j ) 变换,其中l是由预定的任一伪随机数发生器根据用作密钥的参数产生的一个服从均匀分布的i比特伪随机数。在第j维,将第1层到第cj+1层进行循环交换,其中1≤j≤n。将n维变换表中第一维坐标都为k的所有元素称为第一维第k层,其它维类似。
(4)判断输入序列是否结束,如果是则转到步骤(5),否则转到步骤(2);
(5)变换结束。
本发明中的多维可以是二维、三维、四维或者是更高维。
下面详细介绍二维变换表、二维取值算法和二维转换算法。
(1)二维变换表Bk p及其初始化
以i=8为例,第一步,将i的值分成两份a1=4、a2=4。二维变换表Bk p是一个24=16行、24=16列的二维表;第二步,将0到28-1=255共256个数按行的顺序依次从左到右、从上至下填入二维变换表Bk p中,得到顺序排列的二维变换表Bk p[1][1]=0,  Bk p[1][2]=1,……,Bk p[1][16]=15,  Bk p[2][1]=16,……,Bk p[2][16]=31,……,Bk p[16][1]=240,……,Bk p[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为二维坐标在二维变换表Bk p中取得对应元素Bk p[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比特伪随机数。
首先,将二维变换表Bk p的第1行到第c1+1行以行为单位依次循环交换,在交换后,原第1行的所有元素移动到第2行相应的位置,即将Bk p[1][j]移到Bk p[2][j](1≤j≤16);原第2行移动到第3行;……原第c1行移动到第c1+1行;原第c1+1行移动到第1行。在移动的过程中每一行的元素从左到右的相对顺序不变。
然后,根据同样的方法将二维变换表的第1列到第c2+1列以列为单位依次循环交换,在交换后,原第1列的所有元素移动到第2列相应的位置,即将Bk p[j][1]移到Bk p[j][2](1≤j≤16);原第2列移动到第3列;……原第c2列移动到第c2+1列;原第c2+1列移动到第1列。在移动的过程中每一列的元素从上至下的相对顺序不变。
下面进一步介绍三维变换表、三维取值算法和三维转换算法。
在二维变换表Bk p、二维取值算法Dta(m)和二维转换算法Dcb(E)的基础上,设计三维变换表Bk t、三维取值算法Tta(m)和三维转换算法Tcb(E)。
(1)三维变换表Bk t及其初始化
以i=8为例,第一步,将i的值分成三份a1=3、a2=3、a3=2,三维变换表Bk t是一个长23=8、宽23=8、高22=4的三维表;第二步,将0到28-1=255共256个数依次按长、宽、高三维的顺序从小到大填入三维变换表Bk t中,得到顺序排列的三维变换表为Bk t[1][1][1]=0、Bk t[1][1][2]=1、Bk t[1][1][3]=2、Bk t[1][1][4]=3、Bk t[1][2][1]=4…… Bk t[1][2][4]=7、Bk t[1][3][1]=8…… Bk t[1][8][4]=31、Bk t[2][1][1]=32…… Bk t[2][8][4]=63、Bk t[3][1][1]=64…… Bk t[8][8][3]=254、Bk t[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为三维坐标在三维变换表Bk t中取得对应元素Bk t[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)是将三维变换表Bk t中从第一维第1层到第一维第c1+1层的所有元素以层为单位依次循环交换,在交换后,原第一维第1层的所有元素移动到第2层相应的位置,即将Bk t[1][j][h]移动到Bk t[2][j][h](1≤j≤8,1≤h≤4);原第2层移动到第3层;……原第c1层移动到第c1+1层;原第c1+1层移动到第1层。在移动的过程中每一层中所有元素的相对顺序不变。
然后,根据同样的方法将三维变换表Bk t中第二维第1层到第二维第c2+1层以层为单位依次循环交换,在交换后,原第1层的所有元素移动到第2层相应的位置,即将Bk t[j][1][h]移动到Bk t[j][2][h](1≤j≤8,1≤h≤4);原第2层移动到第3层;……原第c2层移动到第c2+1层;原第c2+1层移动到第1层。在移动的过程中每一层中所有元素的相对顺序不变。
最后,根据同样的方法将三维变换表Bk t中第三维第1层到第三维第c3+1层以层为单位依次循环交换,在交换后,原第1层的所有元素移动到第2层相应的位置,即将Bk t[j][h][1]移动到Bk t[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。二维变换表Bk p是一个24=16行、24=16列的二维表,将0到28-1=255共256个数依次按行、列的顺序填入二维表中B0 p中,得到顺序排列的二维变换表:
B p 0 = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 2034 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
由预定的任一伪随机数发生器根据用作密钥的参数产生256个服从均匀分布的8比特伪随机数。以256个服从均匀分布的8比特伪随机数为参数,根据二维转换算法对顺序排列的二维变换表进行256次转换得到初始二维变换表:
B p 0 = 88 93 94 83 90 95 86 85 80 82 89 91 87 81 92 84 120 125 126 115 122 127 118 117 112 114 121 123 119 113 124 116 40 45 46 35 42 47 38 37 32 34 41 43 39 33 44 36 168 173 174 163 170 175 166 165 160 162 169 171 167 161 172 164 152 157 158 147 154 159 150 149 144 146 153 155 151 145 156 148 248 253 254 243 250 255 246 245 240 242 249 251 247 241 252 244 56 61 62 51 58 63 54 53 48 50 57 59 55 49 60 52 24 29 30 19 26 31 22 21 16 18 25 27 23 17 28 20 72 77 78 67 74 79 70 69 64 66 73 75 71 65 76 68 216 221 222 211 218 223 214 213 208 210 217 219 215 209 220 212 184 189 190 179 180 191 182 181 176 178 185 187 183 177 188 180 136 141 142 131 138 143 134 133 128 130 137 139 135 129 140 132 8 13 14 3 10 15 6 5 0 2 9 11 7 1 12 4 200 205 206 195 202 207 198 197 192 194 201 203 199 193 204 196 104 109 110 90 106 111 102 101 96 98 105 107 103 97 108 100 232 237 238 227 234 239 230 229 224 226 233 235 231 225 236 228
(2)获得输入值m:将输入的二进制序列按8比特的长度划分成基元,按顺序取出一个基元作为输入值m=131;获得输出值E:以m为参数根据二维取值算法Dta(m),取B0 p中第9行第4列的元素可以得到输出E=67;
(3)对二维变换表进行转换:根据二维转换算法Dcb(E)和E对B0 p进行转换,由预定的任一伪随机数发生器根据用作密钥的参数产生的一个服从均匀分布的8比特伪随机数l=6。
首先进行行变换,将前11行进行循环交换,将第1行移到第2行、将第2行移到第3行、……将第10行移到第11行、将第11行移到第1行。变换后B0 p变为:
184 189 190 179 186 191 182 181 176 178 185 187 183 177 188 180 88 93 94 83 90 95 86 85 80 82 89 91 87 81 92 84 120 125 126 115 122 127 118 117 112 114 121 123 119 113 124 116 40 45 46 35 42 47 38 37 32 34 41 43 39 33 44 36 168 173 174 163 170 175 166 165 160 162 169 171 167 161 172 164 152 157 158 147 154 159 150 149 144 146 153 155 151 145 156 148 248 253 254 243 250 255 246 245 240 242 249 251 247 241 252 244 56 61 62 51 58 63 54 53 48 50 57 59 55 49 60 52 24 29 30 19 26 31 22 21 16 18 25 27 23 17 28 20 72 77 78 67 74 79 70 69 64 66 73 75 71 65 76 68 216 221 222 211 218 223 214 213 208 210 217 219 215 209 220 212 136 141 142 131 138 143 134 133 128 130 137 139 135 129 140 132 8 13 14 3 10 15 6 5 0 2 9 11 7 1 12 4 200 205 206 195 202 207 198 197 192 194 201 203 199 193 204 196 104 109 110 99 106 111 102 101 96 98 105 107 103 97 108 100 232 237 238 227 234 239 230 229 224 226 233 235 231 225 236 228
然后进行列变换,将前10列进行循环交换,将第1列移到第2列、将第2列移到第3列、……将第9列移到第10列、将第10列移到第1列。变换后B0 p变为:
178 184 189 190 179 186 191 182 181 176 185 187 183 177 188 180 82 88 93 94 83 90 95 86 85 80 89 91 87 81 92 84 114 120 125 126 115 122 127 118 117 112 121 123 119 113 124 116 34 40 45 46 35 42 47 38 37 32 41 43 39 33 44 36 162 168 173 174 163 170 175 166 165 160 169 171 167 161 172 164 146 152 157 158 147 154 159 150 149 144 153 155 151 145 156 148 242 248 253 254 243 250 255 246 245 240 249 251 247 241 252 244 50 56 61 62 51 58 63 54 53 48 57 59 55 49 60 52 18 24 29 30 19 26 31 22 21 16 25 27 23 17 28 20 66 7 77 78 67 74 79 70 69 64 73 75 71 65 76 68 210 216 221 222 211 218 223 214 213 208 217 219 215 209 220 212 130 136 141 142 131 138 143 134 133 128 137 139 135 129 140 132 2 8 13 14 3 10 15 6 5 0 9 11 7 1 12 4 194 200 205 206 195 202 207 198 197 192 201 203 199 193 204 196 98 104 109 110 99 106 111 102 101 96 105 107 103 97 108 100 226 232 237 238 227 234 239 230 229 224 233 235 231 225 236 228
并将转换完成后的二维变换表称为B1 p,将转换后的B1 p作为下一次循环的B0 p
(4)判断输入序列是否输入完毕,如果是则转到步骤(5),否则转到步骤(2);
(5)变换结束。
本发明提出的系统和方法能对输入序列进行动态非线性变换。该系统和方法不仅使序列周期大幅变长、相关性锐减、结构更复杂,消除了高维稀疏网格结构,而且其变换步骤简单、实现容易、速度快,因此该系统和方法可被用来产生随机性高的伪随机序列。

Claims (12)

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,进行 c j = ( c j + l ) mod ( 2 a j ) 变换;
在多维动态非线性变换表的第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,进行 c j = ( c j + l ) mod ( 2 a j ) 变换;
在多维动态非线性变换表的第j维,将第1层到第cj+1层进行循环交换。
11、根据权利要求9所述的对输入序列进行多维动态非线性变换的方法,其特征在于,所述l是由预定的任一伪随机数发生器根据用作密钥的参数产生的一个服从均匀分布的i比特伪随机数。
12、根据权利要求11所述的对输入序列进行多维动态非线性变换的方法,其特征在于,所述多维动态非线性变换表的第j维的第1层是指多维动态非线性变换表中第j维坐标都为1的所有元素;所述多维动态非线性变换表的第j维的第cj+1层是指多维动态非线性变换表中第j维坐标都为cj+1的所有元素。
CN 200610062361 2006-08-28 2006-08-28 一种对输入序列进行多维动态非线性变换的系统和方法 Pending CN1916837A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200610062361 CN1916837A (zh) 2006-08-28 2006-08-28 一种对输入序列进行多维动态非线性变换的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200610062361 CN1916837A (zh) 2006-08-28 2006-08-28 一种对输入序列进行多维动态非线性变换的系统和方法

Publications (1)

Publication Number Publication Date
CN1916837A true CN1916837A (zh) 2007-02-21

Family

ID=37737840

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200610062361 Pending CN1916837A (zh) 2006-08-28 2006-08-28 一种对输入序列进行多维动态非线性变换的系统和方法

Country Status (1)

Country Link
CN (1) CN1916837A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101394266B (zh) * 2008-10-24 2010-12-08 华中科技大学 一种生成变参数混沌信号的方法及混沌保密通信系统
CN111143786A (zh) * 2019-12-25 2020-05-12 卓尔智联(武汉)研究院有限公司 账号的验证口令生成方法、基于验证口令的账号验证方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101394266B (zh) * 2008-10-24 2010-12-08 华中科技大学 一种生成变参数混沌信号的方法及混沌保密通信系统
CN111143786A (zh) * 2019-12-25 2020-05-12 卓尔智联(武汉)研究院有限公司 账号的验证口令生成方法、基于验证口令的账号验证方法
CN111143786B (zh) * 2019-12-25 2022-04-19 卓尔智联(武汉)研究院有限公司 账号的验证口令生成方法、基于验证口令的账号验证方法

Similar Documents

Publication Publication Date Title
Li et al. Towards acceleration of deep convolutional neural networks using stochastic computing
CN1150847A (zh) 使用神经网络的计算机和使用该神经网络的方法
CN1774709A (zh) 使用simd寄存器的小矩阵有效乘法
CN1691068A (zh) 用于重构三维图形数据的装置和方法
CN1441340A (zh) 信息分析显示装置和信息分析显示程序
JP2009003925A (ja) ランダム系列の反復周期の拡張
CN101044508A (zh) 图形数据的高速缓冲存储器有效光栅化
CN1858999A (zh) 伪随机序列发生装置
CN101043284A (zh) 一种宽带码分多址系统中turbo编码器内的交织器
CN1290455A (zh) Dct运算装置
CN1916837A (zh) 一种对输入序列进行多维动态非线性变换的系统和方法
Srinivasa Rao et al. FPGA implementation of digital 3-D image skeletonization algorithm for shape matching applications
CN106452451A (zh) 数据处理方法及装置
Di et al. Exploring resource-efficient acceleration algorithm for transposed convolution of GANs on FPGA
CN1115639C (zh) 数据转换装置和方法
CN1717653A (zh) 带有查询表的乘法器
Qasaimeh et al. An efficient hardware architecture for sparse convolution using linear feedback shift registers
CN1376282A (zh) 在基因算法、信息编码和非重复加密中采用合成基因
CN1530883A (zh) 图像处理装置
CN1556602A (zh) 一种有限精度下的混沌密码产生方法
Shakibhamedan et al. ACE-CNN: Approximate Carry Disregard Multipliers for Energy-Efficient CNN-Based Image Classification
Xie et al. HGC: Hierarchical group convolution for highly efficient neural network
Zheng et al. A Flexible Yet Efficient DNN Pruning Approach for Crossbar-Based Processing-in-Memory Architectures
JP2007041199A5 (zh)
CN1159647C (zh) 加法器及其实现方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Open date: 20070221