專利名稱:位元壓縮加密方法及其器件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)和數(shù)字通訊等技術(shù)領(lǐng)域,是一種集數(shù)據(jù)壓縮和加密于一體的數(shù)據(jù)處理方法及其器件。
本發(fā)明的基礎(chǔ)是P.Elias在六十年代提出的算術(shù)編碼,其原理是用一個(gè)單獨(dú)的浮點(diǎn)輸出數(shù)值代替一段數(shù)據(jù)的整體編碼信息。對于較長的復(fù)雜數(shù)據(jù),輸出數(shù)值需要更多的浮點(diǎn)位數(shù)。
具體地說,若某一數(shù)據(jù)段中含有n個(gè)不同符號s1,s2,…,sn,各符號的出現(xiàn)頻次分別為P1,P2,…,Pn.引進(jìn)記號c0=0,ci=Σj=1iPj/Σj=1nPj---(1)]]>首先構(gòu)造n個(gè)半開區(qū)間[ci-1,ci)顯然這n個(gè)半開區(qū)間互不相交且正好覆蓋區(qū)間
,f0[i],i=0,1… ,2m-1.其具體實(shí)現(xiàn)如下(1)編碼初始化
區(qū)間上限置0,下限置2n-1,即low=0,high=2n-1,移位寄存器量0,即r=0,頻率統(tǒng)計(jì)表各分量置1,即f0[i]=f1[i]=1;i=0,1,…,2m-1;位溢出控制置0,即ov=0.(2)數(shù)值計(jì)算temp=low+(high-low+1)*f0[r]/(f0[r]+f1[r]).(3)編碼判斷(a)如果當(dāng)前編碼的符號為1,則f1[r]加1,即f1[r]=f1[r]+1;調(diào)整low,即low=temp,high不調(diào)整;移位寄存器左移一位,即r=r<<1,并把當(dāng)前編碼符號1,置于移位寄存器末位,即r=r+1.
(b)如果當(dāng)前編碼的符號為0,則f0[r]加1,即f0[r]=f0[r]+1;調(diào)整high,即high=temp-1,low不調(diào)整;移位寄存器左移一位,即r=r<<1.(4)循環(huán)移位(a)如果low和high的最高二進(jìn)位相同,則輸出其最高二進(jìn)位,low和high左移一位,即low=low<<1,high=high<<1,且high末位置1,即high=high+1.
(b)high-low≥2n-2,則返回步驟(2).
(c)上述兩情況都不滿足,位溢出控制符加1,即ov=ov+1.low和high左移一位,即low=low<<1,high=high<<1,且high末位置1,即high=high+1.返回步(4)中步(a).
這里的位輸出過程,視溢出控制而定。若ov=0,則輸出是正向的;否則,為反向輸出。所謂反向輸出是若當(dāng)前輸出1,則實(shí)際輸出0;若當(dāng)前輸出0,則實(shí)際輸出1.例如·ov=2,若當(dāng)前輸出為1,則實(shí)際輸出2個(gè)0(反向).
·ov=3,若當(dāng)前輸出為0,則實(shí)際輸出3個(gè)1(反向).
·ov=0,若當(dāng)前輸出為1,則實(shí)際輸出1個(gè)1(正向).
·ov=0,若當(dāng)前輸出為0,則實(shí)際輸出1個(gè)0(正向).
關(guān)于移位寄存器的位數(shù)m作如下說明如果m小,則需要較少的統(tǒng)計(jì)內(nèi)存,但壓縮效率不高;如m較大,則需要較大的統(tǒng)計(jì)內(nèi)存,但有更高的壓縮效率。一般1≤m≤32,通常我們使用16位移位寄存器,即m=16,這時(shí)需要128K字節(jié)的內(nèi)存開銷,用于兩個(gè)64K字節(jié)的頻率統(tǒng)計(jì)表f0,f1.
關(guān)于初始區(qū)間限2n中的n作如下說明n表示區(qū)間上限使用的二進(jìn)位數(shù),一般4≤n≤16,通常取為8,視計(jì)算過程中使用的計(jì)算精度而定。這些選擇對壓縮效率的影響不大。
另外,在上述以及下面的算法描述過程中,我們已經(jīng)使用或即將使用C語言中的一些位計(jì)算符號,現(xiàn)說明如下a<<k表示a左移k位。a^k表示a與k作異或運(yùn)算。a&k表示a與k作與運(yùn)算。a|k表示a與k作或運(yùn)算。
對應(yīng)于上述自適應(yīng)位元壓縮編碼算法,本發(fā)明也給出相應(yīng)的自適應(yīng)位元壓縮解碼算法,簡稱位元解碼算法,其算法具體步驟如下(1)解碼初始化區(qū)間上限置0,下限置2n-1,即low=0,high=2n-1,移位寄存器置0,即r=0,頻率統(tǒng)計(jì)表各分量置1,即f0[i]=f1[i]=1;i=0,1,…,2m-1;壓縮比特流輸入,code=前n個(gè)輸入位。(2)數(shù)值計(jì)算{value=(code-low+1)*(f0[r]+f1[r])/(high-low+1).temp=low+(high-low+1)*f0[r]/(f0[r]+f1[r]).]]>(3)輸出判斷(a)若value≥f0[r],輸出符號1.f1[r]加1,即f1[r]=f1[r]+1;調(diào)整low,即low=temp,high不調(diào)整;移位寄存器左移一位,即r=r<<1,并把當(dāng)前編碼符號1,置于移位寄存器末位,即r=r+1.
(b)若value<f0[r],輸出符號0,f0[r]加1,即f0[r]=f0[r]+1;調(diào)整high,即high=temp-1.low不調(diào)整;移位寄存器左移一位,即r=r<<1(4)循環(huán)移位(a)如果low和high的最高二進(jìn)位相同,則low和high左移一位,即low=low<<1,high=high<<1,且high末位置1,即high=high+1.
(b)high-low≥2n-2,則返回步驟(2).
(c)上述兩情況都不滿足,則code與2n-2作異或運(yùn)算,即code=code^2n-2;low與2n-2-1作與運(yùn)算,即low=low&(2n-2-1);high與2n-2作或運(yùn)算,即high=high|2n-2.low,code和high同時(shí)左移一位,即low=low<<1,high=high<<1,且high末位置1,即high=high+1.返回步(4)中步(a).
在上述位元解碼算法中,code存放的是編碼輸出的數(shù)據(jù),稱為壓縮比特流;m和n的含義與位元編碼算法中的含義相同,且m和n的取值,在編解碼中必須一致。
本發(fā)明提出的數(shù)據(jù)壓縮加密技術(shù)是結(jié)合自適應(yīng)位元壓縮編碼算法和加密處理方法實(shí)現(xiàn)的。加密處理方法就是在位元編碼初始化過程中,利用密匙引進(jìn)隨機(jī)噪聲,從而達(dá)到隱藏?cái)?shù)據(jù)的作用。我們稱相應(yīng)的算法為自適應(yīng)位元加密算法,具體實(shí)現(xiàn)如下輸入密匙和密表,并按位處理密匙和密表如下·若當(dāng)前密匙位為1,則f1[r]=f1[r]+1,編碼密表中的相應(yīng)位,即依次執(zhí)行位元編碼算法的(2)、(3)、(4)步。
·若當(dāng)前密匙位為0,則f0[r]=f0[r]+1,編碼密表中的相應(yīng)位,即依次執(zhí)行位元編碼算法的(2)、(3)、(4)步。
·循環(huán)執(zhí)行上述兩個(gè)過程,直到編完密表中的所有位。
在位元加密算法中,密匙和密表是任意給定的等長二進(jìn)制數(shù)字。加密者必須記住密匙,以便解碼時(shí)使用;但加密者不需要知道密表的內(nèi)容,因?yàn)樗饕脕頂_亂位元編碼器的編碼狀態(tài)。也就是說,當(dāng)密表編碼結(jié)束后,區(qū)間上限low,區(qū)間下限high,位溢出控制ov,移位寄存器r和頻率統(tǒng)計(jì)表f0[i],f1[i],i=0,1,…,2m-1的當(dāng)前值對不掌握密匙者是不透明的。從這種混亂狀態(tài)出發(fā)編碼明文,就可以隱藏明文的真正含義,達(dá)到加密目的,因?yàn)楣粽卟徽莆彰艹拙蜔o法消除這種混亂狀態(tài)。如果單靠猜測編碼器的當(dāng)前狀態(tài),需要枚舉至少 種可能性;當(dāng)m>8時(shí),這是一個(gè)龐大的天文數(shù)字,即使用現(xiàn)在最快的計(jì)算機(jī)也無法在數(shù)百年之內(nèi)枚舉所有可能性。因此,本發(fā)明提出的加密算法是非常安全的。
針對上述自適應(yīng)位元壓縮加密算法,本發(fā)明也給出相應(yīng)的自適應(yīng)位元解密算法,具體步驟如下輸入加密使用的密匙,并按位處理密匙和密表如下·若當(dāng)前密匙位為1,則f1[r]=f1[r]+1,解碼密表中的相應(yīng)位,即依次執(zhí)行位元解碼算法的(2)、(3)、(4)步,并扔掉輸出位。
·若當(dāng)前密匙位為0,則f0[r]=f0[r]+1,解碼密表中的相應(yīng)位,即依次執(zhí)行位元解碼算法的(2)、(3)、(4)步,并扔掉輸出位。
·循環(huán)執(zhí)行上述兩個(gè)過程,直到解出密表中的所有二進(jìn)位。
根據(jù)上述位元壓縮加密技術(shù),本發(fā)明研制了相應(yīng)的器件一自適應(yīng)位元加解密器,該器件包括加密器和解密器兩個(gè)部分。加密器由產(chǎn)生密匙位的密匙盤,產(chǎn)生密表的隨機(jī)數(shù)發(fā)生器和用于編碼密表和明文的自適應(yīng)位元編碼器構(gòu)成,其中的編碼器實(shí)現(xiàn)自適應(yīng)位元編碼算法。解密器由產(chǎn)生密匙位的密匙盤和用于解碼密表和明文的自適應(yīng)位元解碼器構(gòu)成,其中的解碼器實(shí)現(xiàn)自適應(yīng)位元解碼算法。加解密器的系統(tǒng)框圖如附圖
所示,其工作原理如下·加密過程在密匙的輸入過程中,每輸入一個(gè)密匙位,隨機(jī)數(shù)生成器就產(chǎn)生一個(gè)隨機(jī)二進(jìn)位,密匙位被用于初始化位元算術(shù)編碼器的計(jì)數(shù)器一次,算術(shù)編碼器編碼相應(yīng)的隨機(jī)位并輸出比特流。當(dāng)密匙位輸入結(jié)束,編碼器再用當(dāng)前的編碼參數(shù)和計(jì)數(shù)器狀態(tài)壓縮并編碼明文。
·解密過程依次輸入密匙,每輸入一個(gè)密匙位,密匙位被用于初始化算術(shù)解碼器一次,算術(shù)解碼器解出密表中相應(yīng)的隨機(jī)二進(jìn)位并扔掉。
當(dāng)密匙位輸入結(jié)束,解碼器再用當(dāng)前的解碼參數(shù)和計(jì)數(shù)器狀態(tài)解碼明文。
加密器的操作過程如下(1)編碼初始化區(qū)間上限置0,下限置2n-1,即low=0,high=2n-1,移位寄存器置0,即r=0,頻率統(tǒng)計(jì)表各分量置1,即f0[i]=f1[i]=1;i=0,1,…,2m-1;位溢出控制置0,即ov=0.(2)引進(jìn)噪聲輸入有限長密匙,譬如010110110.隨機(jī)產(chǎn)生等長個(gè)二進(jìn)位表達(dá)的隨機(jī)數(shù)(密表),譬如,111010001.按位處理密匙和密表如下(a)若當(dāng)前密匙位為1,則f1[r]=f1[r]+1,編碼密表中的相應(yīng)位,即依次執(zhí)行位元編碼算法的(2)、(3)、(4)步。
(b)若當(dāng)前密匙位為0,則f0[r]=f0[r]+1,編碼密表中的相應(yīng)位,即依次執(zhí)行位元編碼算法的(2)、(3)、(4)步。
(c)循環(huán)執(zhí)行上述兩個(gè)過程,直到編完密表中的所有位。(3)編碼明文對明文實(shí)施位元編碼算法的(2)、(3)、(4)步。
解密器操作過程如下(1)解碼初始化區(qū)間上限置0,下限置2n-1,即low=0,high=2n-1,移位寄存器置0,即r=0,頻率統(tǒng)計(jì)表各分量置1,即f0[i]=f1[i]=1;i=0,1,…,2m-1;密文比特流輸入,code=前n個(gè)輸入位。(2)消除噪聲輸入加密使用的有限長密匙,譬如010110110.按位處理密匙和密表如下(a)若當(dāng)前密匙位為1,則f1[r]=f1[r]+1,解碼密表中的相應(yīng)位,即依次執(zhí)行位元解碼算法的(2)、(3)、(4)步。
(b)若當(dāng)前密匙位為0,則f0[r]=f0[r]+1,解碼密表中的相應(yīng)位,即依次執(zhí)行位元解碼算法的(2)、(3)、(4)步。
(c)循環(huán)執(zhí)行上述兩個(gè)過程,直到解出密表中的所有隨機(jī)二進(jìn)位。(3)解碼明文對密文實(shí)施位元解碼算法的(2)、(3)、(4)步。
隨機(jī)數(shù)發(fā)生器的引用使攻擊者無法猜測所用密匙的長度,又能擾亂攻擊者對密文的理解。當(dāng)使用幾十個(gè)字的密匙時(shí),不會(huì)對壓縮效率帶來多大的影響。
根據(jù)前面對加密算法的分析,脫密一份用位元加密器加密過的密文,首先必須脫密密表中的隨機(jī)位,隨后明文才能逐個(gè)譯出。因?yàn)槟呐旅鼙碇械娜我庖粋€(gè)比特位發(fā)生錯(cuò)誤,都會(huì)改變算術(shù)解碼器的原始狀態(tài),從而影響隨后的解碼工作。但是攻擊者不知密匙長度就無法知道密表的大小。另一方面,即使知道密表的長度,也無法知道密表的內(nèi)容,因?yàn)樗请S機(jī)數(shù)發(fā)生器產(chǎn)生的一個(gè)隨機(jī)二進(jìn)數(shù)。因此只有使用準(zhǔn)確的密匙才能準(zhǔn)確地解出密表從而得到明文。
利用長密文的統(tǒng)計(jì)特性來猜測密匙,也是非常困難的,因?yàn)槊魑牡慕y(tǒng)計(jì)特性被密表和壓縮按蓋了。因此用上述加密器不管對長明文還是對短明文加密同樣安全有效。
由于加密器按比特位編碼,本發(fā)明可用于加密和壓縮包括文本,圖象和聲音在內(nèi)的多媒體數(shù)據(jù),特別適用于高度保密的機(jī)要檔案和軍事資料的存儲和傳輸??勺鞒善骷?shí)現(xiàn)電報(bào)和電話的加密傳輸,甚至可以在交互網(wǎng)上實(shí)現(xiàn)保密通訊。
權(quán)利要求
1.一種自適應(yīng)位元壓縮加解密方法,包括位元編解碼方法和加解密處理方法。其特征在于位元編碼算法,需要一個(gè)m位的移位寄存器,兩個(gè)2m字節(jié)的頻率統(tǒng)計(jì)表f1[i],f0[t],i=0,1,…,2m-1,(1≤m≤32)編碼實(shí)施步驟如下(1)編碼初始化區(qū)間上限置0,下限置2n-1,即low=0,high=2n-1,4≤n≤16移位寄存器置0,即r=0,頻率統(tǒng)計(jì)表各分量置1,即f0[i]=f1[i]=1;i=0,1,…,2m-1;位溢出控制置0,即ov=0.(2)數(shù)值計(jì)算temp=low+(high-low+1)*f0[r]/(f0[r]+f1[r]).(3)編碼判斷(a)如果當(dāng)前編碼的符號為1,則f1[r]加1,即f1[r]=f1[r]+1;調(diào)整low,即low=temp,high不調(diào)整;移位寄存器左移一位,即r=r<<1,并把當(dāng)前編碼符號1,置于移位寄存器末位,即r=r+1.(b)如果當(dāng)前編碼的符號為0,則f0[r]加1,即f0[r]=f0[r]+1;調(diào)整high,即high=temp-1,low不調(diào)整;移位寄存器左移一位,即r=r<<1.(4)循環(huán)移位(a)如果low和high的最高二進(jìn)位相同,則控制輸出其最高二進(jìn)位,low和high左移一位,即low=low<<1,high=high<<1,且high末位置1,即high=high+1(b)high-low≥2n-2,則返回步驟(2)(c)上述兩情況都不滿足,位溢出控制符加1,即ov=ov+1.low和high左移一位,即low=low<<1,high=high<<1,且high末位置1,即high=high+1.返回步(4)中的步(a).
2.根據(jù)權(quán)利要求1所述的自適應(yīng)位元壓縮加解密方法,其特征在于位元解碼算法,需要一個(gè)m位的移位寄存器,兩個(gè)2m字節(jié)的頻率統(tǒng)計(jì)表f1[i],f0[i],=0,1,…,2m-1,(1≤m≤32).解碼實(shí)施步驟如下(1)解碼初始化區(qū)間上限置0,下限置2n-1,即low=0,high=2n-1,4≤n≤16.移位寄存器置0,即r=0,頻率統(tǒng)計(jì)表各分量置1,即f0[i]=f1[i]=1;i=0,1,…,2m-1;壓縮比特流輸入,code=前n個(gè)輸入位。(2)整數(shù)運(yùn)算{value=(code-low+1)*(f0[r]+f1[r])/(high-low+1)temp=low+(high-low+1)*f0[r]/(f0[r]+f1[r]).]]>(3)輸出判斷(a)若value≥f0[r],輸出符號1.f1[r]加1,即f1[r]=f1[r]+1;調(diào)整low,即low=temp,high不調(diào)整;移位寄存器左移一位,即r=r<<1,并把當(dāng)前編碼符號1,置于移位寄存器末位,即r=r+1.(b)若value<f0[r],輸出符號0,f0[r]加1,即f0[r]=f0[r]+1;調(diào)整high,即high=temp-1,low不調(diào)整;移位寄存器左移一位,即r=r<<1.(4)循環(huán)移位(a)如果low和high的最高二進(jìn)位相同,則low和high左移一位,即low=low<<1,high=high<<1,且high末位置1,即high=high+1.(b)high-low≥2n-2,則返回步驟(2).(c)上述兩情況都不滿足,則code與2n-2作異或運(yùn)算,即code=code^2n-2;low與2n-2-1作與運(yùn)算,即low=low&(2n-2-1);high與2n-2作或運(yùn)算,即high=high|2n-2.low,code和high同時(shí)左移一位,即low=low<<1,high=high<<1,且high末位置1,即high=high+1.返回步(4)中步(a).
3.根據(jù)權(quán)利要求1所述的自適應(yīng)位元壓縮加解密方法,其特征在于加密實(shí)施步驟如下輸入等長密匙和密表,按位處理密匙和密表如下(1)若當(dāng)前密匙位為1,則f1[r]=f1[r]+1,編碼密表中的相應(yīng)位,即依次執(zhí)行位元編碼算法的(2)、(3)、(4)步。(2)若當(dāng)前密匙位為0,則f0[r]=f0[r]+1,編碼密表中的相應(yīng)位,即依次執(zhí)行位元編碼算法的(2)、(3)、(4)步。(3)循環(huán)執(zhí)行上述兩個(gè)過程,直到編完密表中的所有位。
4.根據(jù)權(quán)利要求1所述的自適應(yīng)位元壓縮加解密方法,其特征在于解密實(shí)施步驟如下輸入加密使用的密匙,并按位處理密匙和密表如下(1)若當(dāng)前密匙位為1,則f1[r]=f1[r]+1,解碼密表中的相應(yīng)位,即依次執(zhí)行位元解碼算法的(2),(3),(4)步。(2)若當(dāng)前密匙位為0,則f0[r]=f0[r]+1,解碼密表中的相應(yīng)位,即依次執(zhí)行位元解碼算法的(2),(3),(4)步。(3)循環(huán)執(zhí)行上述兩個(gè)過程,直到解出密表中的所有二進(jìn)位。
5.一種自適應(yīng)位元加解密器,該器件包括加密器和解密器兩個(gè)部分。其特征在于加密器由產(chǎn)生密匙字的密匙盤、產(chǎn)生密表的隨機(jī)數(shù)發(fā)生器和用于編碼密表和明文的自適應(yīng)位元編碼器構(gòu)成,解密器由產(chǎn)生密匙位的密匙盤和用于解碼密表和明文的自適應(yīng)位元解碼器構(gòu)成。
全文摘要
本發(fā)明是一種集壓縮和加密于一體的數(shù)據(jù)處理方法及其器件,它利用自適應(yīng)統(tǒng)計(jì)模型,按位編碼。實(shí)現(xiàn)數(shù)據(jù)的快速壓縮;并通過在編碼過程中混入隨機(jī)噪聲的辦法,實(shí)現(xiàn)數(shù)據(jù)加密,相應(yīng)的器件稱為位元加(解)密器,它由密匙盤、隨機(jī)發(fā)生器和位元編(解)碼器組成,本發(fā)明提出的壓縮加密算法安全快速,可廣泛應(yīng)用壓縮加密文本、圖象和聲音等數(shù)據(jù),特別適應(yīng)于高度保密的機(jī)要檔案和軍事資料的存儲和傳輸,可在交互網(wǎng)上實(shí)現(xiàn)保密通訊。
文檔編號G06F17/00GK1146580SQ96116408
公開日1997年4月2日 申請日期1996年6月25日 優(yōu)先權(quán)日1996年6月25日
發(fā)明者趙風(fēng)光 申請人:復(fù)旦大學(xué)