專利名稱:一種碼字表加解密方法
技術(shù)領(lǐng)域:
該發(fā)明技術(shù)主要應(yīng)用在“信息安全技術(shù)”和“數(shù)據(jù)存貯與管理”等領(lǐng)域
背景技術(shù):
1、碼字表 碼字表的用途非常的廣泛[17][18][19],為許多教學(xué)和拼詞典類型的軟件中所需要。本論文研究的碼字表對象主要是針對應(yīng)用于壓縮編碼和加密系統(tǒng)的碼字表。很多軟件使用大型數(shù)據(jù)庫來存儲碼字表,這些的碼字表需要龐大的管理系統(tǒng)。然而在壓縮編碼和加密系統(tǒng)中,碼字表的應(yīng)用方式比教學(xué)軟件等中的簡單,不希望使用復(fù)雜的管理,只希望能夠在傳輸和存儲時有足夠的安全性并且只占較小的存儲空間。
碼字表的生成過程基本如下1)考察需要使用的字符(或字符)集;2)尋找合適的編碼法(按照碼字表的使用目的);3)按照使用的編碼法將所選字符集編碼,并加入所需信息,制成碼字表。碼字表的生成過程能夠幫助我們了解碼字表的組成要素,進(jìn)而研究在它的存儲過程中,需要保存那些關(guān)鍵信息,能夠唯一表示此碼字表。
不難發(fā)現(xiàn),碼字表需要編碼字符集、字符與碼字的對應(yīng)關(guān)系以及碼字長度來標(biāo)識。缺少了這些信息,碼字表的內(nèi)容將被破壞。所以在本論文構(gòu)造碼字表的存儲結(jié)構(gòu)中,將會著重說明這些信息是怎樣被安置進(jìn)新的結(jié)構(gòu)中的。
在編碼表中,如果對每一待編碼的字符,編碼后的碼字長度一定,那么我們可以用定長的空間來存儲,并且查找碼字時也可以直接使用現(xiàn)有的查找算法。而更一般的情況是用變長碼,如壓縮編碼的壓縮原理就是使經(jīng)常使用的字符用短的二進(jìn)制碼字表示,反之用長的碼字表示。變長碼如果用定長的空間來存儲將會浪費(fèi)大量的空間,所以必須另辟蹊徑。
2、順序存儲 我們首先研究這樣一張碼字表,設(shè) ∑1={A,B,C}∑2={a,b,c,d,e,f} 且∑1上的一編碼方案如圖1所示 如果要順序存儲此張碼字表(即依次存儲字符、碼字對),并且能夠讓程序在讀入存儲的數(shù)據(jù)后自動識別它的內(nèi)容,那么要解決如下問題 1)區(qū)分被編碼字母與碼字 2)區(qū)別每個字母的碼字 3)能夠根據(jù)被編碼字母找到對應(yīng)碼字 要達(dá)到這些目的,必須在存儲的數(shù)據(jù)中加入一些特定的字符,并在程序規(guī)定這些字符的含義。我們可以加入推倒符號,分隔符。例如,規(guī)定 ,符號用來分隔各個編碼 →符號前面是被編碼字符,后面為碼字 則表1可以表示為 A→abc,B→efcd,C→ffb 然而此碼字表存儲的為變長碼,如果要查找任一字母的編碼,無法用時間復(fù)雜度小的查找方法,因為對于每個字母的編碼所需要的存儲空間不相同,所以查找后面字母的編碼時,必須遍歷所有前面的數(shù)據(jù),直到找到此字母開始的代換。
可以對簡單順序存儲作一定的修改,即令每個字母的代換集合存儲長度相同,這樣就可以以字母在字母表中的位置作為索引來查找。如表1的例子,所有編碼表示串的最大長度為6,則我們規(guī)定每個編碼都用6個字符表示,遇到空格或“,”表示此碼字結(jié)束,則它的存儲表示如下 A→abc,B→efcd,C→ffb_ 其中_表示空格符。
這樣的表示會占用額外的存儲空間。若以lmax表示編碼中最長的碼字,
表示碼字的平均長度,n=|∑1|為字母表元素的個數(shù),則需要占用的額外空間為 顯然,在最長的碼字比平均碼字長度大得多時,額外消耗的空間將隨字母表大小的增長線形遞增。
3、字典存儲法 由論文[20],我們想到在文本中可以利用索引查找,即將順序存儲稍稍作些改變,把字母表的信息提取出來作為索引,而剩余的所有編碼作為字典內(nèi)容部分以供查找。在索引中除了存儲字母表,還需要存儲字母的編碼在字典中的起始位置,碼字的長度。仍以表4-1為例,索引和字典部分如下所示。
index=(A,1,3),(B,4,4),(C,8,3) dinctionary=abcefcadffb 那么存儲的信息為index|dictionary。
使用它很簡單,例如,查找B的編碼時,首先在索引中查找到B對應(yīng)的索引項,然后讀出它的編碼起始字符位置為4,長度為4,則從字典中的第四個字符開始讀一個長度為4的字符串efcd,即為B的編碼。
4、其他存儲法 除了以上兩種存儲方法外,還有使用樹型結(jié)構(gòu)或者數(shù)據(jù)庫等方法來存儲碼字表的[21][22]。他們都是根據(jù)應(yīng)用的特殊性決定的。例如霍夫曼編碼的樹型生成結(jié)構(gòu)使得它可以使用樹型結(jié)構(gòu)存儲。對于輸入法等其他大型查找軟件中使用的碼字表可以存儲在數(shù)據(jù)庫中管理。本論文中討論的存儲法與碼字表的一般形式相關(guān),并希望不利用額外的數(shù)據(jù)庫軟件,所以不再對特殊的應(yīng)用詳細(xì)說明。
發(fā)明內(nèi)容
本發(fā)明提出了一種新的碼字表加解密的方法,其主要步驟包括 加密過程主要步驟包括 1)首先,對碼字表τ輸入字母表∑1和輸出字母表∑2中的元素排序,令其為∑1={a1,a2,...,an},∑2={b1,b2,...,bi,!},其中ai,bj為字符,“!”為結(jié)束符; 2)對于值域中的每個詞,先按它和字母表∑1中字母的對應(yīng)關(guān)系進(jìn)行排序,設(shè)為f(∑1)={w1,w2,...wn},其中ai→wi。找出值域f(∑1)中最長的字wk,其長度表示為l,使用映射函數(shù)g∑2l作用于{w1,w2,...wn),這樣,依照原來的順序的對應(yīng)關(guān)系,形成一個新的集合其中,αi為ai對應(yīng)的碼字wi的算術(shù)編碼,Г為碼字對應(yīng)編碼的集合,Γ中每個元素都是區(qū)間_0,(|∑2|)l+1)上的一個數(shù); 3)對Г中的數(shù)字進(jìn)行處理,使這個集合對應(yīng)一個數(shù)字,我們將Г變換成一個同余方程組 x≡α1(modm1) x≡α2(modm2) ... x≡αn(modmn) 其中,x為碼字對應(yīng)的數(shù)字,mi為模數(shù); 4)利用中國剩余定理可以計算得到唯一的整數(shù)x 其中Mi=M/mi,si=Mimodmi。
所述加密過程步驟2)中的映射函數(shù)g∑2l定義如下 1)求出區(qū)間總長度B=(t+1)l+1,以及每個字符出現(xiàn)的概率n=1/(t+1),求出子區(qū)間B1=B*n,并按順序?qū)⑵浞峙浣o∑2中的bi和結(jié)束符“!”; 2)根據(jù)碼字wi的第一個字符確定下一個區(qū)間范圍; 3)將上一個步驟所得的區(qū)間范圍再按照概率再一次平分給bi和結(jié)束符號“!”; 4)再根據(jù)碼字wi的下一個字符確定下一個區(qū)間范圍; 5)將上一個步驟所得的區(qū)間范圍再按照概率再一次平分給bi和結(jié)束符“!”; 6)如此循環(huán)步驟4)、5),直到碼字wi的所有字符都經(jīng)歷過,那么最后一次平分后,結(jié)束符“!”所占的區(qū)間的第一個數(shù)即為碼子wi所對應(yīng)的算術(shù)編碼αi。
所述加密過程步驟3)中模數(shù)mi的定義如下 找出值域f(∑1)中最長的詞wk,其長度表示為l,區(qū)間長度為B=(t+1)l+1,那么αk最大不會超過(t+1)l+1,并且Г所有其它元素的值也不會超過(t+1)l+1,取mi為大于(t+1)l+1的第i個最小的素數(shù),這樣就可以保證x一定存在,即mi=Pri((t+1)l+1),其中Pri(a)表示大于a的第i個最小的素數(shù)。
所述解密過程主要步驟包括 1)計算出B=(t+1)l+1,其中B為進(jìn)行區(qū)間轉(zhuǎn)換映射到數(shù)字時的區(qū)間長度,t為集合∑2中字符的個數(shù)(不包含結(jié)束符); 2)根據(jù)讀入的當(dāng)前字母a,我們首先從字母表信息中獲得此字母的位置值i,計算大于B的第i個最小的素數(shù)mi; 3)求得αi=xmodmi,αi正是a對應(yīng)的碼字wi的算術(shù)編碼; 4)根據(jù)映射函數(shù)g∑2l,對αi這些進(jìn)行區(qū)間轉(zhuǎn)換的逆運(yùn)算后得到的字符串就是wi,用公式表示,由ai獲得它的編碼的函數(shù)為 也即 其中Pri(a)表示大于a的第i個最小的素數(shù)。
從上面的過程可以看到,僅僅有x和ai還不能計算得wi,函數(shù)計算中還需要∑2和f(∑1)中最長的詞wk的長度l。所以,實際上函數(shù)的形式為 Fx(∑1,∑2,l)=C 如果要還原出整張碼字表,只要依次讀入∑1中的字符,對它作步驟1)-4)的處理,就可得到所有符號對應(yīng)的碼字,即f(∑1)?,F(xiàn)在存儲碼字表只需要存儲四元組(∑1,∑2,l,x),而程序中讀入此四元組后,使用函數(shù)Fx的計算方法,就可以還原碼字表了。
本發(fā)明的有益效果為給定一個碼字表τ,即給定一個輸入字母表∑1,輸出字母表∑2和字母表∑2一個語言C,一個明文碼字表τ被加密成一個明文四元組(∑1,∑2,l,x),其中l(wèi)表示語言C中字的最大長度,x是我們加密的一個正整數(shù)。反之,關(guān)于上面得到的四元組(∑1,∑2,l,x),其中,∑1輸入字母表,∑2輸出字母表和l表示輸出字母表∑2一個語言C中字的最大長度,x是一個正整數(shù),則我們可以唯一地恢復(fù)與之相對應(yīng)的碼字表τ,即把一個明文四元組(∑1,∑2,l,x)解密為一個明文碼字表τ,極大地提高了以“碼字表”作為對稱密碼體制中的密鑰的管理的安全性,也極大地減少了存儲碼字表時所占用的空間。
圖1為碼字表示意圖; 圖2為映射函數(shù)g∑2l4次區(qū)間選擇示意圖; 圖3為利用映射函數(shù)g∑2l區(qū)間選擇逆過程。
具體實施例方式 下面結(jié)合附圖對本發(fā)明進(jìn)行進(jìn)一步闡述。
1、區(qū)間轉(zhuǎn)換法 在算術(shù)編碼中,每一條信息對應(yīng)著一個區(qū)間[0,1)上一個子區(qū)間內(nèi)的實數(shù),當(dāng)消息越長時,子區(qū)間就越短,這時需要的精度就更高,編碼自然越長。為了減少實現(xiàn)時的精度,Witten,Neal和Cleary設(shè)計了一個巧妙的辦法,在整數(shù)區(qū)間上作算術(shù)編碼,結(jié)果沒有影響。這里借鑒整數(shù)算術(shù)編碼的思想,將一個字符串轉(zhuǎn)換成一個相應(yīng)的整數(shù)。
對字母表∑(|∑|=t)上的任一詞w,w出現(xiàn)的每個字母a∈∑可看作一個事件,并且事件的概率均為1/t,則一個長度為k的詞(時間序列)出現(xiàn)的概率為(1/t)k。所以,對∑上的每個詞,都可以作為一個概率與之長度相關(guān)事件序列。這個過程,很容易聯(lián)想到算術(shù)編碼。
不失一般性,設(shè)字母表為{a,b,c,d,e,f},我們規(guī)定!為結(jié)束符,那么一個長度為l的字符串(包含結(jié)束符)可能由7個字符(a,b,c,d,e,f,!)中的任何l個字符組成,那么包括結(jié)束符在內(nèi),字符串的實際長度為l+1。我們的操作要在一個足夠大的區(qū)間上對字符串進(jìn)行,這樣才能夠保證任何字符串都能夠映射到的子區(qū)間內(nèi)至少有一個整數(shù)。設(shè)定字符串的長度最長不能超過3(根據(jù)不同的應(yīng)用將會有不同的值),那么加上結(jié)束符后,實際要做4次選擇區(qū)間的過程。
由為保證每個字符串的編碼都能夠得到一個整數(shù),所以操作區(qū)間為[0,2401)。每個符號可能出現(xiàn)的概率都相同為1/7,這樣對字符串bac的處理過程如圖2,則最后得到的區(qū)間為[363,364),取363最為字符串bac的相應(yīng)數(shù)值表達(dá)。
在后面時,將用此種方法把一個字母表上的字符串映射為一個數(shù)字。字符串為s,數(shù)字為α,此映射為g∑l,其中∑表示字符串所在的字母表,l表示最長字符串的長度。則 其還原的過程與此過程相似,對于數(shù)字為α,首先確定它在那個子區(qū)間內(nèi)。將[0,2401)劃分為l+1個等長的子區(qū)間,假設(shè)α屬于第i個子區(qū)間,那么字符串的第一個符號為碼字表∑中的第i個符號;將此子區(qū)間作為當(dāng)前區(qū)間,繼續(xù)劃分,重復(fù)前面的步驟,直到當(dāng)前的符號為結(jié)束符為止,此時獲得的字符串即為所求。
2、轉(zhuǎn)換函數(shù) 給定字母表∑1,∑2和字母表∑2一個語言C,即已知碼字表τ,如何把它轉(zhuǎn)換成一個四元組(∑1,∑2,l,x),其中l(wèi)表示語言C中字的最大長度,x是我們要轉(zhuǎn)換的正整數(shù)。反之,給定一個四元組(∑1,∑2,l,x),我們?nèi)绾无D(zhuǎn)換為一個碼字表τ。
我們設(shè)定|∑1|=n,其中的每個字母對應(yīng)于一個字其中集合C是字母表∑2一個語言。顯然,此對應(yīng)關(guān)系可看作一個單射函數(shù),函數(shù)的定義域為字母表∑1,而值域為C,此函數(shù)可表示為 f∑1→C 既對字母表∑1中的字母的編碼為 ai→wi 然而,對于任意碼字表來說,編碼對應(yīng)的函數(shù)f是沒有任何規(guī)律的。也就是說,如果我們要表示此函數(shù),不能用一個特性來表示它,只能用列舉法窮舉其表示的自變量和因變量對的集合。我們希望尋找其他途徑來表示這個函數(shù),這里我們將找到與此碼字表緊密相聯(lián)的一個數(shù)字,使用此數(shù)字就能夠通過對字母做一系列的計算而得到它所對應(yīng)的編碼,使這個函數(shù)f轉(zhuǎn)變成為一個真正數(shù)學(xué)意義上的函數(shù)F。
如果我們用P來表示碼字表向數(shù)字x轉(zhuǎn)換的過程,根據(jù)上段文字的意思,P就應(yīng)滿足以下關(guān)系式 x=P(∑1,∑2,f) 然后由此數(shù)字構(gòu)造出函數(shù)Fx,令其滿足 Fx(∑1)=C 這樣,只要我們知道了x,對任何一個字母ai我們只需要計算Fx(ai),結(jié)果即為ai的編碼。
下面我們將分別詳細(xì)敘述怎樣獲得這個數(shù)字x和構(gòu)造函數(shù)Fx。P做的工作如下 1)首先,對字母表∑1和∑2中的元素排序(比如英語中26個字母本身就有固定的順序),令其為 ∑1={a1,a2,...,an} ∑2={b1,b2,...,bt} 2)接著,對于值域中的每個碼字,我們也先按它和字母表∑1中字母的對應(yīng)關(guān)系,對其排序為 f(∑1)={w1,w2,...wn} 其中,ai→ wi。
我們找出值域f(∑1)中最長的碼字wk,其長度表示為l。使用映射函數(shù)g∑2l作用于{w1,w2,...wn},這樣,依照原來的順序的對應(yīng)關(guān)系,形成一個新的集合 Γ中每個元素都是區(qū)間_0,(|∑2|+1)l+1)上的一個數(shù)。這并沒有達(dá)到我們的最終目的,我們所希望的是得到一個與函數(shù)f和字母表∑1相關(guān)的一個數(shù)字,而不僅僅是將f的值域轉(zhuǎn)換成數(shù)字的集合。那么下面,我們將要利用上面的集合Γ得到x。在這里我們將用到中國剩余定理。
我們現(xiàn)在只對Г中的數(shù)字進(jìn)行處理,使這個集合對應(yīng)一個數(shù)字,而且可以根據(jù)一些信息可以將Г中的任何一個元素還原出來。這樣好比是把零散的筆記裝訂起來,并且可以通過清晰的索引來快速查找需要的部分。我們將Γ變換成一個同余方程組 x≡α1(modm1) x≡α2(modm2) ... x≡αn(modmn) 模數(shù)mi的計算如下 我們找出值域f(∑1)中最長的碼字wk,其長度表示為l,|∑2|=t。則在對wk進(jìn)行區(qū)間轉(zhuǎn)換映射到數(shù)字時,區(qū)間長度為B=(t+1)l+1,那么αk最大不會超過(t+1)l+1,并且Γ所有其它元素的值也不會超過(t+1)l+1。取mi為大于(t+1)l+1的第i個最小的素數(shù)(這是十分容易的,因為mi并不大),這樣就可以保證x一定存在,即 mi=Pri((t+1)l+1) 其中Pri(a)表示大于a的第i個最小的素數(shù)。
再利用前面中國剩余定理部分的證明可以計算得到唯一的x。
其中Mi=M/mi,si=Mimodmi。
現(xiàn)在,我們已經(jīng)獲得了關(guān)于碼字表對應(yīng)的數(shù)字x,剩下的工作就是構(gòu)造函數(shù)Fx。從上面求x的過程中,我們看到過程 若要計算某個字符對應(yīng)的碼字,則為上述過程的逆過程 1)計算出B=(t+1)l+1 2)然后根據(jù)讀入的當(dāng)前字母a,我們首先從字母表信息中獲得此字母的位置值i,計算大于B的第i個最小的素數(shù)mi。很明顯,這個素數(shù)就是同余方程組中第i個模運(yùn)算式的模數(shù)。
3)我們求得αi=xmodmi。αi正是a對應(yīng)的碼字wi的算術(shù)編碼 4)因為默認(rèn)字母表∑2中所有字母的出現(xiàn)概率是相同的,只要知道字母表∑2的元素個數(shù)t,即知道了其概率為1/(t+1),那么根據(jù)這些進(jìn)行區(qū)間轉(zhuǎn)換的逆運(yùn)算后得到的字符串就是wi。
用公式表示,由ai獲得它的編碼的函數(shù)為 也即,其中Pri(a)表示大于a的第i個最小的素數(shù)。
從上面的過程可以看到,僅僅有x和ai還不能計算得wi,函數(shù)計算中還需要∑2和f(∑1)中最長的詞wk的長度l。所以,實際上函數(shù)的形式為 Fx(∑1,∑2,l)=C 如果要還原出整張碼字表,只要依次讀入∑1中的字符,對它作步驟1~4的處理,就可得到所有符號對應(yīng)的碼字,即f(∑1)?,F(xiàn)在存儲碼字表只需要存儲四元組(∑1,∑2,l,x),而程序中讀入此四元組后,使用函數(shù)Fx的計算方法,就可以還原碼字表了。
下面我們?nèi)詫⑹褂脠D1的例子來進(jìn)一步說明此過程。
兩字母表中元素按照現(xiàn)實中字母表的順序排列不變設(shè), ∑1={A,B,C} ∑2={a,b,c,d,e,f} ∑2的字母個數(shù)為t=6,則字母表∑2中每個字母(包括結(jié)束符)代表的概率為1/7,對圖中的三個詞作區(qū)間轉(zhuǎn)換的過程如下 碼字中最大字符串長度為l=4,所以 B=(t+1)l+1=75=16807 其余碼字處理過程類似,最后轉(zhuǎn)換的結(jié)果如下表所示。
表1碼字的對應(yīng)整數(shù) 下面生成3個大于(t+1)l+1=16807的三個不同的最小素數(shù)m1=16811,m2=16823,m3=16829 建立同余方程式
求得x為74711228178948411,那么需要存儲的信息(∑1,∑2,l,x)為 ({A,B,C},{a,b,c,d,e,f},4,74711228178948411) 在還原碼字表時,即為利用上面的四元組求Fx(ai) 首先,生成3個大于(t+1)l+1=16807的三個素數(shù) m1=16811,m2=16823,m3=16829 然后,用求模公式求得 將求得的{α1,α2,α3}用區(qū)間轉(zhuǎn)換法的逆過程還原出在∑2上的碼字,仍以A->abc為例,如圖3所示,逆過程如下 求得α1=x(mod16811)=483 其余數(shù)字處理過程類似,最后編碼的結(jié)果如表2所示。
表2整數(shù)對應(yīng)的碼字
權(quán)利要求
1.一種碼字表加解密的方法,其特征在于,
加密過程主要步驟包括
1)首先,對碼字表τ字母表∑1和∑2中的元素排序,令其為
∑1={a1,a2,…,an},∑2={b1,b2,…,bt,!}
其中ai為字符,bi為字符,“!”為結(jié)束符;
2)對于值域中的每個碼字wi,我們也先按它和字母表∑1中字母的對應(yīng)關(guān)系,對其排序為
f(∑1)={w1,w2,..wn}
其中,ai→wi。找出值域f(∑1)中最長的碼字wk,其長度表示為l,使用映射函數(shù)g∑2l作用于{w1,w2,..wn},這樣,依照原來的順序的對應(yīng)關(guān)系,形成一個新的集合
其中,αi為a對應(yīng)的碼字wi的算術(shù)編碼,Γ為碼字對應(yīng)編碼的集合,Γ中每個元素都是區(qū)間_,(|∑2|)l+1上的一個數(shù);
3)對Γ中的數(shù)字進(jìn)行處理,使這個集合對應(yīng)一個數(shù)字,我們將Γ變換成一個同余方程組
x≡α1(modm1)
x≡α2(modm2)
...
x≡αn(modmn)
其中,x為碼字對應(yīng)的數(shù)字,mi為模數(shù);
4)利用中國剩余定理可以計算得到唯一的x
其中,
所述解密過程主要步驟包括
1)計算出B=(t+1)l+1,其中B為進(jìn)行區(qū)間轉(zhuǎn)換映射到數(shù)字時的區(qū)間長度,t為集合∑2中字符的個數(shù)(不包含結(jié)束符);
2)根據(jù)讀入的當(dāng)前字母a,我們首先從字母表信息中獲得此字母的位置值i,計算大于B的第i個最小的素數(shù)mi;
3)求得αi=xmodmi,αi正是α對應(yīng)的碼字wi的算術(shù)編碼;
4)根據(jù)映射函數(shù)g∑2l,對αi這些進(jìn)行區(qū)間轉(zhuǎn)換的逆運(yùn)算后得到的字符串就是碼字wi,用公式表示,由ai獲得它的編碼的函數(shù)為
也即其中Pri(a)表示大于a的第i個最小的素數(shù)。
2.根據(jù)權(quán)利要求1所述的碼字表加解密的方法,其特征在于,所述加密過程步驟2)中的映射函數(shù)g∑2l定義如下
1)求出區(qū)間總長度B=(t+1)l+1,以及每個字符出現(xiàn)的概率n=1/(t+1),求出子區(qū)間B1=B*n,并按順序?qū)⑵浞峙浣o∑2中的字符bi和結(jié)束符“!”;
2)根據(jù)碼字wi的第一個字符確定下一個區(qū)間范圍;
3)將上一個步驟所得的區(qū)間范圍再按照概率再一次平分給字符bi和結(jié)束符號“!”;
4)再根據(jù)碼字wi的下一個字符確定下一個區(qū)間范圍;
5)將上一個步驟所得的區(qū)間范圍再按照概率再一次平分給字符bi和結(jié)束符號“!”;
6)如此循環(huán)步驟4)、5),直到碼字wi的所有字符都經(jīng)歷過,那么最后一次平分后,結(jié)束符”!”所占的區(qū)間的第一個數(shù)即為碼字wi所對應(yīng)的算術(shù)編碼αi。
3.根據(jù)權(quán)利要求1所述的碼字表加解密的方法,其特征在于,所述加密過程步驟3)中模數(shù)mi的定義如下
找出值域f(∑1)中最長的碼字wk,其長度表示為l,區(qū)間長度為B=(t+1)l+1,那么αk最大不會超過(t+1)l+1,并且Γ所有其它元素的值也不會超過(t+1)l+1,取mi為大于(t+1)l+1的第i個最小的素數(shù),這樣就可以保證x一定存在,即
mi=Pri((t+1)l+1)
其中Pr(a)表示大于a的第i個最小的素數(shù)。
全文摘要
本發(fā)明公開了一種碼字表的加解密的方法,它應(yīng)用于信息安全技術(shù)領(lǐng)域。給定一個碼字表τ,即給定一個輸入字母表∑1,輸出字母表∑2和∑2上一個語言,明文碼字表τ被加密成明文四元組(∑1,∑2,l,x),其中l(wèi)表示語言中最長的字的長度,x是被加密的正整數(shù)。反之,依據(jù)上面的正整數(shù)x及相關(guān)的四元組(∑1,∑2,l,x),則可唯一地恢復(fù)與之相對應(yīng)的碼字表τ。本發(fā)明實現(xiàn)了將明文碼字表加密為一個正整數(shù),則極大地提高了以“碼字表”作為對稱密碼體制中的密鑰的管理的安全性,也極大地減少了存儲碼字表時所占用的空間。
文檔編號G09C1/00GK101149881SQ200710031028
公開日2008年3月26日 申請日期2007年10月24日 優(yōu)先權(quán)日2007年10月24日
發(fā)明者龍冬陽 申請人:龍冬陽