專利名稱::一種對輸入序列進行多維動態(tài)非線性變換的系統(tǒng)和方法
技術領域:
:本發(fā)明涉及偽隨機序列技術,更具體地說,涉及一種對輸入序列進行多維動態(tài)非線性變換的系統(tǒng)和方法。
背景技術:
:偽隨機序列的理論與應用,從產生到發(fā)展,已有二十幾年的歷史了。偽隨機序列的理論在它形成的初期,便在通信、雷達、導航以及密碼學等重要的
技術領域:
獲得了廣泛的應用。而在近年來的發(fā)展中,它的應用范圍遠遠超過了上述領域,如自動控制、計算機、聲學和光學測量、數字式跟蹤和測距系統(tǒng)以及數字網絡系統(tǒng)的故障檢測等。有關此方面的內容可參考文獻“楊自強、魏公毅,綜述產生偽隨機數的若干新方法,數值計算與計算機應用,2001(3)201-216”,“張傳林、林立東,偽-隨機數發(fā)生器及其應用,數值計算與計算機應用,2002(3)188-208”和“胡德文,偽隨機整數串與偽隨機序列發(fā)生的新方法,中國科學(E輯),2000(3)258-264”。在以密碼學為基礎的信息安全領域中,隨機序列扮演著重要的角色密鑰的生成、數字簽名、認證和鑒別以及各種安全通信協(xié)議都離不開高質量的隨機序列,可參考文獻“王新成、孫宏,高速偽-隨機數發(fā)生器的設計與實現,計算機工程與應用,2004(11)20-23”。從某種意義上講,隨機序列的安全性確定了整個安全體系的安全性。密碼學領域對隨機序列的要求很高,從安全的角度來說,真正意義上的隨機序列是最可靠的,真正的隨機序列是完全不可預測的,隨機序列中的任何一個隨機數都不可能由其他的數推測得到的。在實際應用中,真正的隨機序列只能取自于自然界事件的隨機特性。我們常使用的都是偽隨機序列。通常偽隨機序列發(fā)生器是通過算法實現的,由于算法確定,偽隨機序列發(fā)生器不能生成真正的隨機序列。偽隨機序列發(fā)生器生成的偽隨機序列具有或長或短的周期,當偽隨機序列發(fā)生器的周期足夠大時,產生的序列看起來是隨機的,因此稱為偽隨機序列。在此可參考文獻“張傳林、林立東,偽-隨機數發(fā)生器及其應用,數值計算與計算機應用,2002(3)188-208”,“王新成、孫宏,高速偽-隨機數發(fā)生器的設計與實現,計算機工程與應用,2004(11)20-23”和“陳敘、楊萬全,一種產生周期任意長偽隨機序列的方法,通信保密,2000(4)80-81”。偽隨機序列的產生長期以來都是各國學者研究的熱點,隨著計算機的計算能力的提高和廣泛應用,利用計算機來產生偽隨機序列成為一種重要的方法,目前,有許多文獻討論如何設計偽隨機序列發(fā)生器,這些偽隨機序列發(fā)生器都能夠通過多種隨機性統(tǒng)計檢驗。其中比較著名的有線性同余發(fā)生器LCG(LinearCongruentialGenerator)、Fibonacci序列發(fā)生器、線性反饋移位寄存器LFSR(LinearFeedbackShiftRegister)和二次剩余發(fā)生器BBS(Blum,BlumandShubGenerator)等等。這些偽隨機序列發(fā)生器在實際中得到了廣泛的應用,這方面已經有大量的實例,此處不一一列舉,可參考文獻“胡德文,偽隨機整數串與偽隨機序列發(fā)生的新方法,中國科學(E輯),2000(3)258-264”。但是由偽隨機序列發(fā)生器產生的偽隨機序列仍存在一些重要的基本問題尚待解決。其中,線性同余序列具有長周期相關現象,也就是說,線性同余發(fā)生器所得到的偽隨機序列其前后兩半段是強相關的,并且線性同余序列的最大缺陷是高維不均勻性,即所有線性同余序列都有高維稀疏網絡結構。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)”。雖然人們針對這些問題提出了一些改進方法,但未能解決根本問題。例如,線性同余組合發(fā)生器優(yōu)于組成它的任何一個發(fā)生器,但是線性同余組合發(fā)生器本質上等價于另一個線性同余發(fā)生器,因此線性同余組合發(fā)生器也具有高維網格結構的特征,可參考文獻“楊自強、魏公毅,綜述產生偽隨機數的若干新方法,數值計算與計算機應用,2001(3)201-216”?,F有技術中已提出一種“洗牌算法”,可對當前序列進行動態(tài)變換?!跋磁扑惴ā钡妮斎霝?i相序列,輸出為2i相序列,它是一種對序列進行動態(tài)變換的方法。其中所述序列是一個由0到255共256個元素組成的一維數組?!跋磁扑惴ā彪m然是針對密碼技術提出來的,但也可以應用于對其它隨機序列的動態(tài)變換,所以在此將其與本發(fā)明進行比較。洗牌算法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。顯然,對不同的初始序列都可做同樣的處理。序列的動態(tài)修改算法如下算法的參數是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.所以要按每一個碼字進行循環(huán),一共循環(huán)三次。上述“洗牌算法”要按b6j、b7j這兩個值的四種不同的情況,選擇不同的操作(如表1所示)。“洗牌算法”要實現彈洗算法Scb(p,q)、抽洗算法Dcb(p,q)和切牌算法Tcb(p)這三種操作,三種操作的實現各不相同,因此,“洗牌算法”的步驟繁瑣,實現比較復雜,從而使運行速度比較慢。
發(fā)明內容針對偽隨機序列周期短、相關性強和高維稀疏網格結構等缺陷,以及現有“洗牌算法”步驟繁瑣,實現比較復雜,運行速度比較慢等問題,本發(fā)明提出了一種用于提高序列隨機性的對輸入序列進行多維動態(tài)非線性變換的系統(tǒng)和方法。本發(fā)明解決其技術問題所采用的技術方案是提出一種對輸入序列進行多維動態(tài)非線性變換的系統(tǒng),其中包括多維動態(tài)非線性變換表部件,用于得到初始多維動態(tài)非線性變換表B0;多維動態(tài)非線性變換表取值部件,用于從多維動態(tài)非線性變換表B0中得到輸出值E;多維動態(tài)非線性變換表轉換部件,以輸出值E為參數對多維動態(tài)非線性變換表B0進行轉換,轉換后的多維動態(tài)非線性變換表稱為B1,將轉換后得到的B1作為多維動態(tài)非線性變換表部件的下一個初始多維動態(tài)非線性變換表B0。在本發(fā)明所述的對輸入序列進行多維動態(tài)非線性變換的系統(tǒng)中,多維動態(tài)非線性變換表部件根據輸入序列2i得到初始多維動態(tài)非線性變換表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維動態(tài)非線性變換表;(s203)由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生2i個服從均勻分布的i比特偽隨機數;(s204)以2i個i比特的偽隨機數為參數,根據n維動態(tài)非線性變換表的轉換算法,對步驟(s202)中得到的順序排列的n維動態(tài)非線性變換表進行2i次轉換;(s205)得到初始n維動態(tài)非線性變換表B0。在本發(fā)明所述的對輸入序列進行多維動態(tài)非線性變換的系統(tǒng)中,所述多維動態(tài)非線性變換表取值部件獲得輸出值包括從輸入序列中獲得輸入值m,將m表示為i比特二進制形式,將m分成n份,分別為a1、a2、......、an比特,其中a1+a2+......+an-1+an=i;接著用bj表示第j份的值,其中1≤j≤n;然后從多維動態(tài)非線性變換表B0中得到輸出E=B0[b1+1][b2+1]…[bn+1]。在本發(fā)明所述的對輸入序列進行多維動態(tài)非線性變換的系統(tǒng)中,多維動態(tài)非線性變換表轉換部件對多維動態(tài)非線性變換表B0的轉換包括將i比特的輸出值E分成n份,分別為a1、a2、......、an比特,其中a1+a2+......+an-1+an=i;用cj表示第j份的值,其中1≤j≤n,進行cj=(cj+l)mod(2aj)]]>變換;在多維動態(tài)非線性變換表的第j維,將第1層到第cj+1層進行循環(huán)交換。本發(fā)明另一方面還提出了一種對輸入序列進行多維動態(tài)非線性變換的方法,輸入為2i相序列,輸出為2i相序列,i為大于0的整數,該方法包括下列步驟(a)生成初始的多維動態(tài)非線性變換表B0;(b)從輸入序列中獲得輸入值m,以m為參數根據基于多維動態(tài)非線性變換表B0的取值算法得到輸出值E;(c)以E為參數,根據作用于多維動態(tài)非線性變換表B0的轉換算法對多維動態(tài)非線性變換表進行轉換,得到轉換后的多維動態(tài)非線性變換表B1;將轉換后得到的B1作為下一次循環(huán)的B0;(d)判斷輸入序列是否結束,如果是則轉到步驟(e),否則返回到步驟(b);(e)根據每一次執(zhí)行所述步驟(b)得到的輸出值E生成輸出序列。在本發(fā)明所述的對輸入序列進行多維動態(tài)非線性變換的方法中,所述步驟(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)中構造的多維數組中,得到順序排列的多維動態(tài)非線性變換表;(a3)由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生2i個服從均勻分布的i比特偽隨機數;(a4)以2i個i比特的偽隨機數為參數根據多維動態(tài)非線性變換表的轉換算法,對步驟(a2)中得到的順序排列的多維動態(tài)非線性變換表進行2i次轉換;(a5)得到初始多維動態(tài)非線性變換表B0。在本發(fā)明所述的對輸入序列進行多維動態(tài)非線性變換的方法中,所述步驟(b)中的獲得輸入值m包括將輸入的二進制序列按i比特的長度劃分成基元,按順序取出一個基元作為輸入值m。在本發(fā)明所述的對輸入序列進行多維動態(tài)非線性變換的方法中,所述步驟(b)中的多維動態(tài)非線性變換表的取值算法包括將m表示為i比特二進制形式,將m分成n份,分別為a1、a2、……、an比特,其中a1+a2+......+an-1+an=i;用bj表示第j份的值,其中1≤j≤n;然后查多維動態(tài)非線性變換表B0,得到輸出E=B0[b1+1][b2+1]…[bn+1]。在本發(fā)明所述的對輸入序列進行多維動態(tài)非線性變換的方法中,所述多維動態(tài)非線性變換表的轉換算法是選擇一組能夠構成對稱群生成系的輪換操作,對多維動態(tài)非線性變換表進行轉換。所述轉換算法包括將i比特的輸入參數E分成n份,分別為a1、a2、……、an比特,其中a1+a2+......+an-1+an=i;用cj表示第j份的值,其中1≤j≤n,進行cj=(cj+l)mod(2aj)]]>變換;在多維動態(tài)非線性變換表的第j維,將第1層到第cj+1層進行循環(huán)交換,(將n維變換表中第一維坐標都為k的所有元素稱為第一維第k層,其它維類似)。在本發(fā)明所述的對輸入序列進行多維動態(tài)非線性變換的方法中,所述l是由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生的一個服從均勻分布的i比特偽隨機數。所述多維動態(tài)非線性變換表的第j維的第1層是指多維動態(tài)非線性變換表中第j維坐標都為1的所有元素;所述多維動態(tài)非線性變換表的第j維的第cj+1層是指多維動態(tài)非線性變換表中第j維坐標都為cj+1的所有元素。實施本發(fā)明的對輸入序列進行多維動態(tài)非線性變換的系統(tǒng)和方法,具有以下有益效果1、本發(fā)明提出的系統(tǒng)和方法是通過非線性變換表隨機進行的,并且非線性變換表也是在隨機變換的。這兩方面的因素使經過變換后的序列周期大幅增長、相關性銳減、結構更加復雜,從而使得輸出序列具有更好的隨機性。2、本發(fā)明提出的系統(tǒng)和方法簡單,在二維轉換算法的實現中,可以對行、列的變換進行并行設計在進行行變換的時候,可以使16列的數據同時進行移動;在進行列變換的時候,可以使16行的數據同時進行移動。同理,三維或者是更高維的轉換算法同樣可以并行實現,這樣大大地減少了變換的時間,大幅提高運行速度。因此,不僅能極大地提高輸入序列的隨機性,還能有效地降低計算復雜度、實現簡單、高效。3、本發(fā)明提出的系統(tǒng)和方法在輸入序列具有均勻、獨立性的條件下,輸出序列也具有均勻、獨立的特性,因此,僅需要輸入序列滿足均勻、獨立性,而對輸入序列的產生方法沒有任何要求,從而體現出了該系統(tǒng)和方法在應用方面的靈活性。4、本發(fā)明提出的系統(tǒng)和方法具有靈活、適應性強的特點。多維動態(tài)非線性變換方法既可以二維、三維實現,也可以更高維實現,為算法的設計提供了多種選擇;同時i的大小也可以根據實際情況確定,使得本發(fā)明應用范圍更廣泛,從而體現出了該系統(tǒng)和方法在設計方面的靈活性。本發(fā)明提出的系統(tǒng)和方法對現有的偽隨機序列進行動態(tài)非線性變換,使其具有更高的隨機性,因此該系統(tǒng)和方法可在通信、雷達、導航以及密碼學等需要隨機數的領域和行業(yè)得到應用。下面將結合附圖及實施例對本發(fā)明作進一步說明,附圖中圖1是本發(fā)明對輸入序列進行多維動態(tài)非線性變換的系統(tǒng)結構示意圖;圖2是本發(fā)明對輸入序列進行多維動態(tài)非線性變換的方法流程圖;圖3是本發(fā)明多維動態(tài)非線性變換表的初始化流程圖。具體實施例方式如圖1所示,是本發(fā)明對輸入序列進行多維動態(tài)非線性變換的系統(tǒng)結構示意圖。其中包括多維動態(tài)非線性變換表部件、多維動態(tài)非線性變換表取值部件和多維動態(tài)非線性變換表轉換部件。多維動態(tài)非線性變換表部件根據輸入序列可實現多維動態(tài)非線性變換表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維動態(tài)非線性變換表;(s203)由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生2i個服從均勻分布的i比特偽隨機數;(s204)以2i個i比特的偽隨機數為參數,根據n維動態(tài)非線性變換表的轉換算法,對步驟(s202)中得到的順序排列的n維動態(tài)非線性變換表進行2i次轉換;(s205)得到初始n維動態(tài)非線性變換表B0。多維動態(tài)非線性變換表取值部件,用于從多維動態(tài)非線性變換表B0中得到輸出值E。其中得到輸出值E的具體過程包括從輸入序列中獲得輸入值m,將m表示為i比特二進制形式,將m分成n份,分別為a1、a2、......、an比特,其中a1+a2+......+an-1+an=i;接著用bj表示第j份的值,其中1≤j≤n;然后從多維動態(tài)非線性變換表B0中得到輸出E=B0[b1+1][b2+1]…[bn+1]。多維動態(tài)非線性變換表轉換部件,以輸出值E為參數對多維動態(tài)非線性變換表B0進行轉換,轉換后的多維動態(tài)非線性變換表稱為B1,將轉換后得到的B1作為多維動態(tài)非線性變換表部件的下一個初始多維動態(tài)非線性變換表B0。具體轉換過程包括將i比特的輸出值E分成n份,分別為a1、a2、......、an比特,其中a1+a2+......+an-1+an=i;用cj表示第j份的值,其中1≤j≤n,進行cj=(cj+l)mod(2aj)]]>變換;在多維動態(tài)非線性變換表的第j維,將第1層到第cj+1層進行循環(huán)交換。本發(fā)明所提出的對輸入序列進行多維動態(tài)非線性變換的方法,輸入為2i相序列,輸出為2i相序列。該方法主要包括多維動態(tài)非線性變換表、多維動態(tài)非線性變換表取值算法和多維動態(tài)非線性變換表轉換算法。為了敘述方便,在下文中分別簡稱為多維變換表、多維取值算法和多維轉換算法。如圖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維動態(tài)非線性變換表中得到順序排列的n維動態(tài)非線性變換表;在步驟303中,由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生2i個服從均勻分布的i比特偽隨機數;在步驟304中,以2i個i比特的偽隨機數為參數根據n維動態(tài)非線性變換表的轉換算法,對順序排列的n維動態(tài)非線性變換表進行2i次轉換;在步驟305中,得到初始n維動態(tài)非線性變換表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份的值,然后查多維動態(tài)非線性變換表B0得到輸出E=B0[b1+1][b2+1]…[bn+1]。(3)對多維變換表進行轉換以E為參數根據作用于多維變換表的轉換算法對多維變換表B0進行轉換,轉換后的多維變換表稱為B1,將轉換后得到的B1作為下一次循環(huán)的B0;所述多維轉換算法的具體操作如下將i比特的輸入參數E分成n份,分別為a1,a2,……,an比特,其中a1+a2+......+an-1+an=i,用cj(1≤j≤n)表示第j份的值,然后做cj=(cj+l)mod(2aj)]]>變換,其中l(wèi)是由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生的一個服從均勻分布的i比特偽隨機數。在第j維,將第1層到第cj+1層進行循環(huán)交換,其中1≤j≤n。將n維變換表中第一維坐標都為k的所有元素稱為第一維第k層,其它維類似。(4)判斷輸入序列是否結束,如果是則轉到步驟(5),否則轉到步驟(2);(5)變換結束。本發(fā)明中的多維可以是二維、三維、四維或者是更高維。下面詳細介紹二維變換表、二維取值算法和二維轉換算法。(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;第三步,由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生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(wèi)是由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生的一個服從均勻分布的8比特偽隨機數。首先,將二維變換表Bkp的第1行到第c1+1行以行為單位依次循環(huán)交換,在交換后,原第1行的所有元素移動到第2行相應的位置,即將Bkp[1][j]移到Bkp[2][j](1≤j≤16);原第2行移動到第3行;……原第c1行移動到第c1+1行;原第c1+1行移動到第1行。在移動的過程中每一行的元素從左到右的相對順序不變。然后,根據同樣的方法將二維變換表的第1列到第c2+1列以列為單位依次循環(huán)交換,在交換后,原第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;第三步,由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生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(wèi)是由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生的一個服從均勻分布的8比特偽隨機數。將三維變換表中第一維坐標都為j的所有元素稱為第一維第j層,其它兩維類似。首先,三維轉換算法Tcb(E)是將三維變換表Bkt中從第一維第1層到第一維第c1+1層的所有元素以層為單位依次循環(huán)交換,在交換后,原第一維第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層以層為單位依次循環(huán)交換,在交換后,原第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層以層為單位依次循環(huán)交換,在交換后,原第1層的所有元素移動到第2層相應的位置,即將Bkt[j][h][1]移動到Bkt[j][h][2](1≤j≤8,1≤h≤8);原第2層的元素移動到第3層;……原第c3層移動到第c3+1層;原第c3+1層移動到第1層。在移動的過程中每一層中所有元素的相對順序不變。本發(fā)明的優(yōu)選實施例中,以二維動態(tài)非線性變換為例,取i=8。詳細說明本發(fā)明提出的方法。(1)初始化將i的值分成兩份a1=4、a2=4。二維變換表Bkp是一個24=16行、24=16列的二維表,將0到28-1=255共256個數依次按行、列的順序填入二維表中B0p中,得到順序排列的二維變換表Bp0=01234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032034205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255]]>由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生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進行轉換,由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生的一個服從均勻分布的8比特偽隨機數l=6。首先進行行變換,將前11行進行循環(huán)交換,將第1行移到第2行、將第2行移到第3行、……將第10行移到第11行、將第11行移到第1行。變換后B0p變?yōu)?841891901791861911821811761781851871831771881808893948390958685808289918781928412012512611512212711811711211412112311911312411640454635424738373234414339334436168173174163170175166165160162169171167161172164152157158147154159150149144146153155151145156148248253254243250255246245240242249251247241252244566162515863545348505759554960522429301926312221161825272317282072777867747970696466737571657668216221222211218223214213208210217219215209220212136141142131138143134133128130137139135129140132813143101565029117112420020520619520220719819719219420120319919320419610410911099106111102101969810510710397108100232237238227234239230229224226233235231225236228]]>然后進行列變換,將前10列進行循環(huán)交換,將第1列移到第2列、將第2列移到第3列、……將第9列移到第10列、將第10列移到第1列。變換后B0p變?yōu)?78184189190179186191182181176185187183177188180828893948390958685808991878192841141201251261151221271181171121211231191131241163440454635424738373241433933443616216817317416317017516616516016917116716117216414615215715814715415915014914415315515114515614824224825325424325025524624524024925124724125224450566162515863545348575955496052182429301926312221162527231728206677778677479706964737571657668210216221222211218223214213208217219215209220212130136141142131138143134133128137139135129140132281314310156509117112419420020520619520220719819719220120319919320419698104109110991061111021019610510710397108100226232237238227234239230229224233235231225236228]]>并將轉換完成后的二維變換表稱為B1p,將轉換后的B1p作為下一次循環(huán)的B0p;(4)判斷輸入序列是否輸入完畢,如果是則轉到步驟(5),否則轉到步驟(2);(5)變換結束。本發(fā)明提出的系統(tǒng)和方法能對輸入序列進行動態(tài)非線性變換。該系統(tǒng)和方法不僅使序列周期大幅變長、相關性銳減、結構更復雜,消除了高維稀疏網格結構,而且其變換步驟簡單、實現容易、速度快,因此該系統(tǒng)和方法可被用來產生隨機性高的偽隨機序列。權利要求1.一種對輸入序列進行多維動態(tài)非線性變換的系統(tǒng),其特征在于,其中包括多維動態(tài)非線性變換表部件,用于得到初始多維動態(tài)非線性變換表B0;多維動態(tài)非線性變換表取值部件,用于從多維動態(tài)非線性變換表B0中得到輸出值E;多維動態(tài)非線性變換表轉換部件,以輸出值E為參數對多維動態(tài)非線性變換表B0進行轉換,轉換后的多維動態(tài)非線性變換表稱為B1,將轉換后得到的B1作為多維動態(tài)非線性變換表部件的下一個初始多維動態(tài)非線性變換表B0。2.根據權利要求1所述的對輸入序列進行多維動態(tài)非線性變換的系統(tǒng),其特征在于,多維動態(tài)非線性變換表部件根據輸入序列2i得到初始多維動態(tài)非線性變換表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維動態(tài)非線性變換表;(s203)由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生2i個服從均勻分布的i比特偽隨機數;(s204)以2i個i比特的偽隨機數為參數,根據n維動態(tài)非線性變換表的轉換算法,對步驟(s202)中得到的順序排列的n維動態(tài)非線性變換表進行2i次轉換;(s205)得到初始n維動態(tài)非線性變換表B0。3.根據權利要求2所述的對輸入序列進行多維動態(tài)非線性變換的系統(tǒng),其特征在于,所述多維動態(tài)非線性變換表取值部件獲得輸出值包括從輸入序列中獲得輸入值m,將m表示為i比特二進制形式,將m分成n份,分別為a1、a2、……、an比特,其中a1+a2+……+an-1+an=i;接著用bj表示第j份的值,其中1≤j≤n;然后從多維動態(tài)非線性變換表B0中得到輸出E=B0[b1+1][b2+1]…[bn+1]。4.根據權利要求3所述的對輸入序列進行多維動態(tài)非線性變換的系統(tǒng),其特征在于,多維動態(tài)非線性變換表轉換部件對多維動態(tài)非線性變換表B0的轉換包括將i比特的輸出值E分成n份,分別為a1、a2、……、an比特,其中a1+a2+……+an-1+an=i;用cj表示第j份的值,其中1≤j≤n,進行cj=(cj+l)mod(2aj)]]>變換;在多維動態(tài)非線性變換表的第j維,將第1層到第cj+1層進行循環(huán)交換。5.一種對輸入序列進行多維動態(tài)非線性變換的方法,輸入為2i相序列,輸出為2i相序列,i為大于0的整數,其特征在于,該方法包括下列步驟(a)生成初始的多維動態(tài)非線性變換表B0;(b)從輸入序列中獲得輸入值m,以m為參數根據基于多維動態(tài)非線性變換表B0的取值算法得到輸出值E;(c)以E為參數,根據作用于多維動態(tài)非線性變換表B0的轉換算法對多維動態(tài)非線性變換表進行轉換,得到轉換后的多維動態(tài)非線性變換表B1;將轉換后得到的B1作為下一次循環(huán)的B0;(d)判斷輸入序列是否結束,如果是則轉到步驟(e),否則返回到步驟(b);(e)根據每一次執(zhí)行所述步驟(b)得到的輸出值E生成輸出序列。6.根據權利要求5所述的對輸入序列進行多維動態(tài)非線性變換的方法,其特征在于,所述步驟(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維動態(tài)非線性變換表;(a3)由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生2i個服從均勻分布的i比特偽隨機數;(a4)以2i個i比特的偽隨機數為參數,根據n維動態(tài)非線性變換表的轉換算法,對步驟(a2)中得到的順序排列的n維動態(tài)非線性變換表進行2i次轉換;(a5)得到初始n維動態(tài)非線性變換表B0。7.根據權利要求5所述的對輸入序列進行多維動態(tài)非線性變換的方法,其特征在于,所述步驟(b)中的獲得輸入值m包括將輸入的二進制序列按i比特的長度劃分成基元,按順序取出一個基元作為輸入值m。8.根據權利要求5所述的對輸入序列進行多維動態(tài)非線性變換的方法,其特征在于,所述步驟(b)中的多維動態(tài)非線性變換表的取值算法包括將m表示為i比特二進制形式,將m分成n份,分別為a1、a2、……、an比特,其中a1+a2+……+an-1+an=i;接著用bj表示第j份的值,其中1≤j≤n;然后從多維動態(tài)非線性變換表B0中得到輸出E=B0[b1+1][b2+1]…[bn+1]。9.根據權利要求5或6所述的對輸入序列進行多維動態(tài)非線性變換的方法,其特征在于,所述多維動態(tài)非線性變換表的轉換算法是選擇一組能夠構成對稱群生成系的輪換操作,對多維動態(tài)非線性變換表進行轉換。10.根據權利要求9所述的對輸入序列進行多維動態(tài)非線性變換的方法,其特征在于,所述轉換算法包括將i比特的輸入參數E分成n份,分別為a1、a2、……、an比特,其中a1+a2+……+an-1+an=i;用cj表示第j份的值,其中1≤j≤n,進行cj=(cj+l)mod(2aj)]]>變換;在多維動態(tài)非線性變換表的第j維,將第1層到第cj+1層進行循環(huán)交換。11.根據權利要求9所述的對輸入序列進行多維動態(tài)非線性變換的方法,其特征在于,所述l是由預定的任一偽隨機數發(fā)生器根據用作密鑰的參數產生的一個服從均勻分布的i比特偽隨機數。12.根據權利要求11所述的對輸入序列進行多維動態(tài)非線性變換的方法,其特征在于,所述多維動態(tài)非線性變換表的第j維的第1層是指多維動態(tài)非線性變換表中第j維坐標都為1的所有元素;所述多維動態(tài)非線性變換表的第j維的第cj+1層是指多維動態(tài)非線性變換表中第j維坐標都為cj+1的所有元素。全文摘要本發(fā)明涉及一種對輸入序列進行多維動態(tài)非線性變換的系統(tǒng)和方法,輸入為文檔編號G06F7/58GK1916837SQ20061006236公開日2007年2月21日申請日期2006年8月28日優(yōu)先權日2006年8月28日發(fā)明者鄭志彬,位繼偉,胡漢平,王祖喜,吳曉剛,石永,許婭,周麟,朱子奇,盧鵬宇申請人:華中科技大學,華為技術有限公司