數(shù)??梢赃x取非線性函數(shù)庫(kù)中的其中一個(gè)函數(shù)或幾個(gè)函數(shù)的組合產(chǎn)生第一無(wú)理數(shù),作為信息載體。
[0052]進(jìn)一步的,無(wú)理數(shù)產(chǎn)生器還包括線性函數(shù)庫(kù),也就是既包含非線性函數(shù)庫(kù)又包含線性函數(shù)庫(kù),線性函數(shù)庫(kù)中存有通過(guò)輸入一有理數(shù)無(wú)法產(chǎn)生無(wú)理數(shù)的函數(shù)。線性函數(shù)庫(kù)至少包括以下一種或幾種:加法函數(shù),減法函數(shù),乘法函數(shù),除法函數(shù),當(dāng)然也可以包括其他的線性函數(shù)。在之前非線性函數(shù)庫(kù)產(chǎn)生第一無(wú)理數(shù)后,由兩個(gè)或多個(gè)第一無(wú)理數(shù)輸入到線性函數(shù)庫(kù)中的其中一個(gè)函數(shù)或幾個(gè)函數(shù)的組合中產(chǎn)生第二無(wú)理數(shù),作為信息載體。
[0053]較佳的,從函數(shù)庫(kù)中選取一函數(shù)后,標(biāo)記該函數(shù)為不可再次選取的狀態(tài)。具體的,可對(duì)函數(shù)庫(kù)FL中的函數(shù)進(jìn)行依次編號(hào),如F1、F2和F3等;以隨機(jī)數(shù)種子S為基礎(chǔ)產(chǎn)生隨機(jī)數(shù)R!,設(shè)Ri = Fr則將函數(shù)Fr從函數(shù)庫(kù)FL中標(biāo)記為不可再選取。從而增加信息載體的隨機(jī)性及不可預(yù)測(cè)性。
[0054]步驟S1之后執(zhí)行步驟S2,將信息報(bào)文拆分成預(yù)設(shè)數(shù)目的報(bào)文片段,獲取一對(duì)應(yīng)預(yù)設(shè)數(shù)目的長(zhǎng)度的數(shù)字序列,將數(shù)字序列的各數(shù)字作為各報(bào)文片段的索引號(hào)。例如將信息報(bào)文的每個(gè)字節(jié)進(jìn)行拆分,將各字節(jié)插入到信息載體中,且插入位置由數(shù)字序列的各數(shù)字確定的索引號(hào)決定,數(shù)字序列例如是一個(gè)隨機(jī)序列,數(shù)字序列的長(zhǎng)度可以和信息報(bào)文的字節(jié)數(shù)目相同。
[0055]在步驟S2中,數(shù)字序列可以為一隨機(jī)整數(shù)的各位上的數(shù)值組合而成的序列。優(yōu)選的,該隨機(jī)整數(shù)的產(chǎn)生方式為步驟A1:獲取所述無(wú)理數(shù)的小數(shù)部分,并根據(jù)所述預(yù)設(shè)數(shù)目將該小數(shù)部分轉(zhuǎn)換為整數(shù),作為所述隨機(jī)整數(shù),計(jì)算公式依次包括(a)和(b):
[0056]Δ IN=IN-[IN](a)
[0057]Nr=[ Δ IN*10'Ar](b)
[0058]其中,IN為所述無(wú)理數(shù),[IN]為所述無(wú)理數(shù)的取整值,ΔIN為所述無(wú)理數(shù)與其取整值之間的差,Ar為所述預(yù)設(shè)數(shù)目,Nr為所述隨機(jī)整數(shù)。
[0059]較佳的,在步驟A1之前還包括All:判斷ΔΙΝ=ΙΝ_[ΙΝ]是否大于零,如果是則保留該ΙΝ,否則重新產(chǎn)生IN。具體的,首先,排除第一無(wú)理數(shù)1見(jiàn)為整數(shù)的可能性,即判斷ΔΙΝ1 =1見(jiàn)-[1犯]是否大于零,如果是則保留該1犯,否則重新產(chǎn)生ΙΝ1;接著,若第二無(wú)理數(shù)用到信息載體中的話,排除第二無(wú)理數(shù)ΙΝ2為整數(shù)的可能性,即判斷待輸入的兩個(gè)第一無(wú)理數(shù)的絕對(duì)值是否相同,如果不是則保留該ΙΝ2,否則重新產(chǎn)生ΙΝ2。
[0060]由于數(shù)字序列為根據(jù)無(wú)理數(shù)產(chǎn)生的一個(gè)隨機(jī)整數(shù)拆分成的隨機(jī)序列,各個(gè)報(bào)文片段根據(jù)隨機(jī)序列中的一個(gè)值作為索引號(hào)插入到無(wú)理數(shù)信息載體中,進(jìn)一步增加插入位置的不可預(yù)測(cè)性。
[0061]步驟S2之后執(zhí)行步驟S3,將各報(bào)文片段根據(jù)各索引號(hào)插入到信息載體的相應(yīng)位置處,形成傳輸報(bào)文,每一次的插入位置均為在之前已插入報(bào)文片段后的信息載體的基礎(chǔ)上索引號(hào)確定的位置。也就是說(shuō),根據(jù)數(shù)字序列的每個(gè)數(shù)字依次將報(bào)文片段(例如是信息報(bào)文的每個(gè)字節(jié)數(shù)據(jù))插入到信息載體的相應(yīng)位置,一個(gè)索引號(hào)對(duì)應(yīng)信息載體(若之前已有插入的報(bào)文片段則算上報(bào)文片段的占位)的位置。
[0062]步驟S3之后執(zhí)行步驟S4,設(shè)置傳輸報(bào)文的報(bào)文頭部,在報(bào)文頭部填入握手?jǐn)?shù)據(jù),握手?jǐn)?shù)據(jù)包括索引號(hào)。
[0063]可選的,在步驟S3和S4之間還包括步驟S31:將傳輸報(bào)文進(jìn)行分片重組;在步驟S4中,所述握手?jǐn)?shù)據(jù)還包括重組信息。對(duì)傳輸報(bào)文進(jìn)行隨機(jī)重組的步驟可以包括:為傳輸報(bào)文的每一個(gè)字節(jié)分配相應(yīng)的索引標(biāo)記;從指定的數(shù)字序列中不放回地隨機(jī)抽取一個(gè)數(shù)字,直至序列為空,并將所得結(jié)果放入新的序列中;根據(jù)所得序列中的數(shù)字為傳輸報(bào)文的每一個(gè)字節(jié)分配新的索引標(biāo)記;在接收方依據(jù)傳輸報(bào)文中每一個(gè)字節(jié)的索引標(biāo)記對(duì)報(bào)文進(jìn)行重組。引入報(bào)文重組機(jī)制,與報(bào)文分段結(jié)合,更有效降低了傳輸報(bào)文協(xié)議頭被駭客非法解析的可能性。
[0064]作為優(yōu)選的實(shí)施方式,在步驟S1之前還包括步驟SI1:為日期的各個(gè)欄位設(shè)置權(quán)重,取系統(tǒng)時(shí)間將其各個(gè)欄位的數(shù)與相應(yīng)權(quán)重相乘,并將各乘積結(jié)果相加得到用于輸入無(wú)理數(shù)產(chǎn)生器產(chǎn)生無(wú)理數(shù)的輸入?yún)?shù)。利用收發(fā)雙方都可以獨(dú)立獲取的某一個(gè)時(shí)間點(diǎn)作為無(wú)理數(shù)生成器的輸入,一定程度上避免了因?yàn)檩斎雲(yún)?shù)的交換而給某一秘密消息的協(xié)商帶來(lái)安全隱患的問(wèn)題。
[0065]為了更清楚的說(shuō)明本發(fā)明的報(bào)文動(dòng)態(tài)方法,下面通過(guò)具體的實(shí)施例進(jìn)行描述,但并不作為本發(fā)明的限制,并且只是示意性的說(shuō)明,實(shí)際中的數(shù)據(jù)會(huì)更加多及復(fù)雜。
[0066]在本實(shí)施例中,約定通過(guò)系統(tǒng)時(shí)間生成信息載體的方法,步驟為
[0067]1)從操作系統(tǒng)讀取當(dāng)前時(shí)間,如2015年9月25日21時(shí)12分;
[0068]2)收發(fā)雙方將約定時(shí)間設(shè)置為當(dāng)前時(shí)間以前的某一時(shí)刻(精確到分鐘),如2015年9月25日21時(shí)1分;
[0069]3)對(duì)雙方約定的時(shí)間進(jìn)行如下的求和,并將所得結(jié)果取整:
[0070][Tap]=[1/60+21+25*24+9*31*24+2015*12*31*24]=17997273;
[0071]4)通過(guò)隨機(jī)數(shù)rn從非線性函數(shù)庫(kù)中選取函數(shù),如“l(fā)n(x)”和“x~(l/3)”,并利用其從線性函數(shù)庫(kù)中選取函數(shù),如“+” ;
[0072]5)將[Tap]代入非線性函數(shù)“l(fā)n(x)”和“x~(l/3)”分別計(jì)算,所得結(jié)果作為參數(shù)輸入至加法函數(shù)中:IR=ln(17997273)+17997273~( 1/3) =278.7666348128;
[0073]6)通過(guò) Dir=IR-[IR] =0.7666348128得到IR 的小數(shù)部分;
[0074]7)根據(jù) Lcr[0] =DiR*10-[DiR*10] = 7,Lcr[n] =LCr[n-l]*10-[LCr[n-l]*10](n> = l)進(jìn)行迭代計(jì)算,得到鏈表1^={7,6,6,6,3,4,8,1,2,8}。
[0075]在本實(shí)施例中,信息報(bào)文在信息載體中插入位置的方法,步驟為
[0076]1)設(shè)置一個(gè)計(jì)數(shù)器,其初始值為10;
[0077]2)從0至9中取隨機(jī)數(shù)^ = 3,從鏈表1^={0,1,2,3,4,5,6,7,8,9}中不放回地抽取索引值為3的元素Ir[0] = 3,即Lca,i = Lca,o-Lca,o[ri];
[0078]3)從0至9中再取隨機(jī)數(shù)組{>2,Γ3,Γ4,...,r1},根據(jù)Lca,ι = Lca,i—i_Lca,i—ι[?] (2〈 = i〈二^^進(jìn)行迭代運(yùn)算’得到鏈表^二口,^#…",。,?』』}。
[0079]在本實(shí)施例中,在信息載體隨機(jī)位置插入信息報(bào)文的方法,步驟為
[0080]1)假設(shè)待封裝的信息報(bào)文為L(zhǎng)CT= {2,1,1,1,49},根據(jù)LCT.length = 5從IR中截取前5個(gè)元素得到鏈表Lii ={3,4,1,6,5};
[0081]2)根據(jù)信息報(bào)文的長(zhǎng)度在字節(jié)插入過(guò)程中經(jīng)歷的變化將鏈表Ln修改為L(zhǎng)IIR= {3,5,7,9,10};
[0082]3)根據(jù)鏈表Lm將信息報(bào)文LCT中的所有元素插入至鏈表Lcr中,得到信息載體LP ={7,6,6,2,6,1,3,1,4,1,49,8,1,2,8}0
[0083]本實(shí)施例中,將傳輸報(bào)文進(jìn)行重組的方法,步驟為
[0084]1)設(shè)有鏈表厶0={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};
[0085]2)產(chǎn)生隨機(jī)數(shù)鏈表 RAQ={5,5,2,2,2,13,4,4,2,11,11,3,0,6,6};
[0086]3)根據(jù)△。,1 =厶。,。-1^0[0],厶0,11 =厶。,11—1-1^0[11-1]得到鏈表厶[?={5,6,2,3,4,14,9,10,11,13,12,8,0,7,1};
[0087]4)根據(jù)厶1?對(duì)1^進(jìn)行重組并得到1^={1,3,6,2,6,8,1,49,8,2,1,1,7,1,6}。
[0088]圖2示出本發(fā)明實(shí)施例的用來(lái)傳輸前述報(bào)文動(dòng)態(tài)封裝方法封裝的報(bào)文的動(dòng)態(tài)隧道構(gòu)建方法,傳輸報(bào)文作為載荷裝入TCP報(bào)文中,也就是在傳輸報(bào)文上加上TCP的報(bào)文頭部,該方法包括以下步驟:
[0089]B1:發(fā)送方在所述傳輸報(bào)文的報(bào)文頭部增加隧道編號(hào)字段;
[0090 ] B2:發(fā)送方通過(guò)TCP報(bào)文向接收方以控制消息的方式發(fā)送驗(yàn)證信息,接收方從本地驗(yàn)證信息數(shù)據(jù)庫(kù)中搜索并比對(duì)該驗(yàn)證信息,如果比對(duì)成功則向發(fā)送方回復(fù)確認(rèn)消息并返回隧道編號(hào),否則回復(fù)拒絕消息;
[0091]B3:發(fā)送方如果收到確認(rèn)消息,則將隧道編號(hào)填入所述傳輸報(bào)文的報(bào)文頭部中,發(fā)送方將隧道編號(hào)和還原傳輸報(bào)文所需的參數(shù)作為控制消息發(fā)送給接收方,接收方記錄接收的隧道編號(hào)和還原傳輸報(bào)文所需的參數(shù);
[0092]B4:發(fā)送方將封裝好的傳輸報(bào)文作為數(shù)據(jù)消息發(fā)送給接收方,接收方根據(jù)上次記錄的控制消息還原接收到的數(shù)據(jù)消息。
[0093]具體的,在步驟B1中,發(fā)送方首先在傳輸報(bào)文的報(bào)文頭部添加一隧道編號(hào)字段,用來(lái)存儲(chǔ)傳輸該報(bào)文的隧道,但是在初始狀態(tài)時(shí)該隧道編號(hào)字段是空的,等待接收方反饋。
[0094]步驟B1之后執(zhí)行步驟B2,發(fā)送方通過(guò)向接收方以控制消息的方式發(fā)