??? 摘 要: 在對(duì)DES分組密碼算法詳細(xì)介紹的基礎(chǔ)上,基于MFC設(shè)計(jì)實(shí)現(xiàn)了DES算法的可視化演示平臺(tái)。該平臺(tái)動(dòng)態(tài)顯示DES加密過(guò)程中每一階段密文和密鑰的變換情況,通過(guò)再現(xiàn)DES加/解密過(guò)程的途徑,使人們?nèi)菀桌斫膺@一復(fù)雜的迭代過(guò)程.?
??? 關(guān)鍵詞: MFC; DES; 可視化; 密鑰
?
??? 隨著計(jì)算機(jī)和Internet技術(shù)的普及,網(wǎng)絡(luò)通信已經(jīng)滲透到社會(huì)的各個(gè)方面,信息安全問(wèn)題已受到人們極大的關(guān)注。如何保證信息在傳送時(shí)不會(huì)被竊密者竊取并破譯,是網(wǎng)絡(luò)技術(shù)人員以及密碼學(xué)家們所面臨的問(wèn)題。要想使信息可靠傳輸,發(fā)信者必須對(duì)所發(fā)的數(shù)據(jù)(即明文)通過(guò)加密系統(tǒng)變成密文,收信者收到密文后再用相應(yīng)的解密系統(tǒng)對(duì)密文解密恢復(fù)成明文。而《密碼學(xué)新動(dòng)向》的發(fā)表和美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn)DES的頒布實(shí)施標(biāo)志著密碼學(xué)的誕生,密碼學(xué)在網(wǎng)絡(luò)安全方面發(fā)揮著越來(lái)越重要的作用。?
??? 目前常用的密碼系統(tǒng)根據(jù)其加密方式,可分為基于信息理論的密碼系統(tǒng)和基于復(fù)雜性理論的密碼系統(tǒng),前者是以香農(nóng)定理為理論依據(jù),后者則是通過(guò)復(fù)雜算法來(lái)實(shí)現(xiàn),主要有RSA公鑰密碼算法和DES分組密碼算法. 在國(guó)內(nèi),隨著三金工程(金橋工程、金關(guān)工程和金卡工程)、尤其是金卡工程的啟動(dòng),DES算法在Pos、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收費(fèi)站等領(lǐng)域被廣泛使用,以此來(lái)實(shí)現(xiàn)關(guān)鍵數(shù)據(jù)的保密。如信用卡持卡人的PIN加密傳輸、IC卡與Pos間的雙向認(rèn)證、金融交易數(shù)據(jù)包的MAC校驗(yàn)等均用到DES算法。本文將詳細(xì)介紹DES分組密碼算法,并且設(shè)計(jì)實(shí)現(xiàn)基于MFC的DES算法可視化演示平臺(tái)。該平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)能方便觀測(cè)DES算法加/解密過(guò)程中密文和密鑰在各階段的變化過(guò)程,形象地再現(xiàn)了DES算法加/解密的迭代過(guò)程。?
1 DES分組密碼算法?
??? DES (Data Encryption Standard )算法是1977年由美國(guó)國(guó)家標(biāo)準(zhǔn)局NBS(National Bureau of Standard)頒布的標(biāo)準(zhǔn),用于商業(yè)和非機(jī)密的政府應(yīng)用領(lǐng)域的加密,是在IBM的Lucifer算法的基礎(chǔ)上設(shè)計(jì)的,后被國(guó)家標(biāo)準(zhǔn)局采用[2]。?
??? 簡(jiǎn)單地說(shuō),密碼算法只不過(guò)是兩種基本加密技術(shù)——混亂和擴(kuò)散的組合。DES基本分組也是這些技術(shù)的組合(先代替后置換),它基于密鑰作用于明文。DES有16輪,這意味著要在明文分組上16次實(shí)施相同的組合技術(shù),如圖1所示。?
?
?
??? DES算法的入口參數(shù)有Key、Data、Mode三個(gè),其中Key為8 B,共64 bit,是DES算法的工作密鑰;Data是8 B、64 bit的被加/解密的數(shù)據(jù);Mode為工作方式,有解密和加密兩種。 ?
??? 在通信網(wǎng)絡(luò)的兩端,雙方約定一致的Key,在通信的源點(diǎn)用Key對(duì)核心數(shù)據(jù)進(jìn)行加密,然后以密文形式在公共通信網(wǎng)(如電話網(wǎng))中傳輸?shù)侥康牡睾螅猛瑯拥腒ey對(duì)密文進(jìn)行解密,便再現(xiàn)了明文形式的核心數(shù)據(jù)。這樣就保證了核心數(shù)據(jù)在公共網(wǎng)絡(luò)中傳輸?shù)陌踩院涂煽啃?。通過(guò)定期同時(shí)更新通信網(wǎng)絡(luò)中源端和目的端的Key,便能提高數(shù)據(jù)的保密性。?
1.1? DES算法概述?
??? DES是一個(gè)分組加密算法,一次加密64 bit的明文分組,輸出是64 bit的密文分組。DES對(duì)64 bit的明文分組進(jìn)行操作,首先通過(guò)一個(gè)初始置換,將明文分成左半部分和右半部分,各長(zhǎng)32 bit,然后進(jìn)行16輪完全相同的運(yùn)算。經(jīng)過(guò)16輪后,左、右半部分合在一起經(jīng)過(guò)一個(gè)末置換(初始置換的逆過(guò)程),這樣就完成了該算法。?
??? 其中Bi是第i次迭代結(jié)果,Li和Ri是Bi的左半部分和右半部分,Ki是第i輪的密鑰,F(xiàn)是實(shí)現(xiàn)代替、置換及密鑰異或等運(yùn)算的函數(shù)。 ?
??? 如圖2所示,從密鑰的56 bit中選出48 bit,通過(guò)一個(gè)擴(kuò)展置換將數(shù)據(jù)的右半部分?jǐn)U展成48 bit,并通過(guò)一個(gè)異或操作與48 bit密鑰結(jié)合;通過(guò)8個(gè)S盒將48 bit替代成新的32 bit數(shù)據(jù),再將其置換一次,這四步運(yùn)算構(gòu)成了函數(shù)F(Ri,Ki+1)。通過(guò)一個(gè)異或運(yùn)算將函數(shù)F(Ri, Ki+1)的輸出與左半部分結(jié)合,原來(lái)的右半部分即成為左半部分。將該操作重復(fù)16次便實(shí)現(xiàn)了DES的16輪運(yùn)算。?
?
?
1.2 函數(shù)F(Ri,Ki+1)的計(jì)算?
??? 如圖3所示,E盒擴(kuò)展置換、與密鑰間的異或運(yùn)算、S盒壓縮替代和P盒置換構(gòu)成了函數(shù)F(Ri,Ki+1),函數(shù)的計(jì)算過(guò)程為: ?
??? (1)利用固定擴(kuò)展E將Ri擴(kuò)展成一個(gè)長(zhǎng)度為48 bit的串E(Ri)。 ?
??? 并將結(jié)果分成8個(gè)長(zhǎng)度為6的bit串。?
??? (3) 48? bit的輸入數(shù)據(jù)通過(guò)8個(gè)S盒S1、S2、S3、S4、S5、S6、S7、S8后,輸出32? bit的數(shù)據(jù)Y。?
??? (4)將長(zhǎng)度為32?? bit的串Y通過(guò)一個(gè)固定置換P,將最終的置換結(jié)果記為F(Ri,Ki+1)(0≤i≤15)。?
?
?
1.3 密鑰置換?
??? DES算法一開始,由于不考慮每個(gè)字節(jié)的第8 bit,DES的密鑰由64 bit減至56 bit,每個(gè)字節(jié)的第8 bit作為奇偶校驗(yàn)位以確保密鑰不發(fā)生錯(cuò)誤。在DES的每一輪中,從56 bit的密鑰產(chǎn)生出不同的48 bit子密鑰, 這些子密鑰根據(jù)文獻(xiàn)[3]中給出的置換方式確定。?
??? 首先,56 bit密鑰被分成兩部分,每部分28 bit。其次根據(jù)輪數(shù),這兩部分分別循環(huán)左移1 bit或28 bit。從第1輪到第16輪的移動(dòng)位數(shù)分別為:1、1、2、2、2、2、2、2、1、2、2、2、2、2、2、1,最后從56 bit中選出48 bit。因?yàn)檫@個(gè)運(yùn)算不僅置換了每位的順序,同時(shí)也選擇了密鑰,因而被稱為壓縮置換,這個(gè)運(yùn)算提供了一組48 bit的集。文獻(xiàn)[4]中給出具體的壓縮置換方法。例如將處在第33 bit的那一位在輸出時(shí)移動(dòng)到第35 bit的位置,而處于第18 bit的那一位被略去。圖4所示為DES算法密鑰的生成過(guò)程。?
?
?
??? 對(duì)于每一個(gè)i(0≤i≤16),有Ci=LSi(Ci-1)、Di=LSi(Di-1)、Ki=PC-2(CiDi),其中LSi表示一個(gè)或兩個(gè)位置的左循環(huán)移位,不同輪次移位的位數(shù)不同。PC-1和PC-2是兩種不同的基本置換。?
1.4? S盒壓縮?
??? S盒是DES算法強(qiáng)大功能的源泉,?? S盒定義了DES算法的替換模式,每個(gè)S盒有16列和4行,它的每個(gè)元素是一個(gè)4? bit的塊,通常用十進(jìn)制表示。S盒的列號(hào)為0~15,而行號(hào)為0~3,共有8種不同的S盒。48? bit的輸入數(shù)據(jù)經(jīng)過(guò)S盒壓縮替代后變?yōu)?2 bit的輸出數(shù)據(jù)。S盒的壓縮替代原理為:對(duì)于每個(gè)S盒而言有6 bit的輸入數(shù)據(jù),假如輸入數(shù)據(jù)為b1b2b3b4b5b6b7b8,Si盒以b1b6的值為行標(biāo),以b2b3b4b5的值為列標(biāo),在Si盒中找出相應(yīng)位置的值作為輸出。該值的二進(jìn)制表示長(zhǎng)度為4 bit,這樣Si盒就將6 bit的輸入數(shù)據(jù)壓縮替代為4 bit輸出數(shù)據(jù)。?
??? 參考文獻(xiàn)[5]中詳細(xì)描述了8個(gè)S盒的內(nèi)部設(shè)計(jì)形式,并且總結(jié)出S盒的特征為:?
??? (1) S盒的每行是列號(hào)的一個(gè)非線性映射,這種非線性特征給定了一個(gè)輸入輸出值的集合,很難預(yù)計(jì)S盒的輸出。 ?
??? (2) 改變S盒的一個(gè)輸入位,至少會(huì)改變兩位輸出。?
1.5 DES算法安全性描述?
??? DES分組加密算法具有極高的安全性,到目前為止,除了窮舉搜索法對(duì)DES算法攻擊外,還沒(méi)有發(fā)現(xiàn)更有效的方法。而56 bit長(zhǎng)密鑰的窮舉空間為256,這就意味著,如果一臺(tái)計(jì)算機(jī)的速度為一秒鐘檢測(cè)一百萬(wàn)個(gè)密鑰,則它搜索完所有的密鑰需要2 285年的時(shí)間,可見,這是很難實(shí)現(xiàn)的,隨著科學(xué)技術(shù)的發(fā)展,當(dāng)出現(xiàn)高速計(jì)算機(jī)后,可以考慮把DES密鑰的長(zhǎng)度增長(zhǎng)一些,以提高算法的安全性,達(dá)到更高的保密程度,如3DES。?
??? DES算法中只用到64 bit密鑰中的56 bit,而第8、16、24、32、40、48、56和64 bit并沒(méi)有參與DES運(yùn)算,即DES的安全性是基于除這8 bit以外的其余56 bit的組合空間256得以保證的。在實(shí)際應(yīng)用中,應(yīng)避開這8 bit作為有效數(shù)據(jù),才能保證DES算法安全可靠的發(fā)揮作用。如果使用密鑰Key的這8 bit作為有效數(shù)據(jù),將不能保證DES加密數(shù)據(jù)的安全性,會(huì)對(duì)運(yùn)用DES來(lái)達(dá)到保密作用的系統(tǒng)產(chǎn)生的數(shù)據(jù)帶來(lái)被破譯的危險(xiǎn),留下被攻擊的極大隱患。這8 bit的作用只是作為密鑰的奇偶校驗(yàn)位,在實(shí)際應(yīng)用中能比較容易地避開這8 bit用其他56 bit作為有效數(shù)據(jù)。?
2? 演示平臺(tái)功能模塊設(shè)計(jì)?
??? 根據(jù)DES算法的加/解密過(guò)程,基于MFC的DES算法可視化演示平臺(tái)包含如圖5所示的模塊。?
?
?
??? 該演示平臺(tái)主要有兩大功能模塊,即加密模塊和解密模塊,其中加密模塊是將輸入的8 B明文在密鑰的作用下經(jīng)過(guò)一系列的變換轉(zhuǎn)化為十六進(jìn)制的密文,在該模塊中動(dòng)態(tài)實(shí)現(xiàn)DES算法16輪中每輪密鑰和密文的輸出,同時(shí)給出每輪密文的內(nèi)部變換過(guò)程。而解密模塊是加密模塊的逆過(guò)程,該模塊將十六進(jìn)制的密文在密鑰的作用下還原為初始的明文。?
3 技術(shù)實(shí)現(xiàn)?
3.1 加密模塊?
??? (1) 密鑰的產(chǎn)生
??? 加密模塊是對(duì)輸入平臺(tái)的8 bit明文進(jìn)行加密,產(chǎn)生16進(jìn)制密文的過(guò)程,這一過(guò)程中需要密鑰與密文進(jìn)行16輪的相關(guān)操作,而該密鑰可以由用戶自主輸入8 B的字符,也可以由平臺(tái)隨機(jī)產(chǎn)生。密鑰的隨機(jī)產(chǎn)生函數(shù)如下:?
??? void GetChar()??????????????????????????????????? //獲取隨機(jī)密鑰?
??? {??? ……?
??? CString String_Array='1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';?
??? ??? str= new char[5200];??????? ????????????????????? //申請(qǐng)內(nèi)存?
??????? for(i=0;i<100;i++)//構(gòu)建輔助數(shù)組,限制密鑰的形式?
????for(j=0;j<52;j++)?
???? ?? str[i*52+j]= String_Array [j];?? ???????? //形成序列數(shù)組?
??? srand(GetTickCount());? ??????????????? //用時(shí)間做隨機(jī)種子?
??? ??? for(i=0;i<5200;i++)?
????{ ?
????? k=(rand()+i)%5200;? ? //隨機(jī)生成序號(hào)以便交換?
? ?????? ……?????????????????? //交換數(shù)組中str[i]和str[k]的值?
????? }?
??? ……??????? //從輔助數(shù)組中隨機(jī)選取8個(gè)字符作為密鑰?
??? delete[] str;????????????????????????????????????????????? //釋放空間?
}?
??? (2) 加密過(guò)程?
??? 加密過(guò)程要求輸入64 bit的明文數(shù)據(jù),首先對(duì)該明文數(shù)據(jù)進(jìn)行初始置換,在密鑰控制下對(duì)輸入的明文進(jìn)行16輪的迭代,最后對(duì)迭代后的輸出結(jié)果經(jīng)過(guò)末置換變換后輸出64 bit的密文數(shù)據(jù)。因?yàn)檫@一過(guò)程對(duì)所有傳輸?shù)臄?shù)據(jù)都進(jìn)行了加密,所以加密過(guò)程對(duì)用戶是透明的。本文加密函數(shù)的主要部分如下所示:?
??? void DES_JiaMiFunction() ?
??? {??? ……?
???? ?DES_Process(); //DES處理,獲取密鑰與左右各32 bit密文?
??? ? FinalIP(Lbts,Rbts,outbts);??????????????? ????????????//末置換?
??? ……?
??? Show_Text(m_cfile);?????????????????? //顯示最后的加密密文?
}?
??? void DES_Process() ?
{??? ……?
??? GetDlgItemText(IDC_EDIT2,m_mfile);?? //獲取明文字符串?
??? ……?? //判斷明文是否是8 B,將明文存儲(chǔ)在數(shù)組中?
??? chartobits(inch,inbts);???????????? //明文字符轉(zhuǎn)化為比特流?
??? GetDlgItemText(IDC_EDIT1,m_key); //獲取密鑰字符串,m_key位存放密鑰的數(shù)組?
??? ……//判斷密鑰是否是8 B,?? 將密鑰存儲(chǔ)在數(shù)組中?
??? chartobits(inkey,keybts);????????? //密鑰字符轉(zhuǎn)化為比特流?
??? InitIP(inbts,Lbts,Rbts);?? //初始置換,把明文比特流分成左右各32 bit分別保存在Lbts、Rbts中?
??? pc1tran(keybts,Cbts28,Dbts28);???? ???????????????//pc-1置換?
??? for(cnt=0;cnt<16;cnt++)?
{?
??????? leftshift(Cbts28,ls[cnt]);??????????????????????? //循環(huán)左移?
??????? leftshift(Dbts28,ls[cnt]);??????????????????????? //循環(huán)左移?
??????? pc2tran(Cbts28,Dbts28,Kbts48);???????????? //pc-2置換?
??????? subkey[cnt]=Kbts48;?
??? }????????? //16輪密鑰循環(huán),pc-2置換后保存在數(shù)組中?
??? for(cnt=0;cnt<16;cnt++)?
??? {//經(jīng)過(guò)16輪運(yùn)算過(guò)后得到的Lbts、Rbts
? ??????? oldLbts=Lbts[cnt];?
??? ????? Lbts[cnt+1]=Rbts[cnt];?
??? ????? ftran(Rbts,subkey.bitarr[cnt],fRes);?
??? //F()函數(shù)運(yùn)算?
??? }?
??? flag=1; //flag為全局變量,標(biāo)記過(guò)程所處的階段?
}?
??? (3) 密文內(nèi)部變換過(guò)程的實(shí)現(xiàn)?
??? 平臺(tái)需顯示出每一輪操作中密文和密鑰具體的變換過(guò)程,本文在實(shí)現(xiàn)該功能時(shí),采用定義全局變量flag來(lái)標(biāo)記變換過(guò)程所到達(dá)的階段。因?yàn)镕(Ri,Ki+1)函數(shù)中的各操作之間具有一定的先后順序性,所以必須保證各操作按其相應(yīng)的先后順序進(jìn)行。當(dāng)點(diǎn)擊相應(yīng)的操作按鈕(如圖8所示)時(shí),平臺(tái)首先會(huì)對(duì)flag的值進(jìn)行判斷,根據(jù)flag的值,補(bǔ)充尚未進(jìn)行的操作或者還原多余的操作。不同的flag值對(duì)應(yīng)不同的操作階段:flag=1加密結(jié)束;flag=2表示E盒置換完畢;flag=3表示與密鑰進(jìn)行了異或操作;flag=4表示S盒代替結(jié)束;flag=5表示P盒置換完成。?
3.2 解密模塊?
??? 在經(jīng)過(guò)所有的代替、置換、異或和循環(huán)移動(dòng)之后,會(huì)認(rèn)為解密算法和加密算法完全不同,且像加密算法一樣具有很強(qiáng)的混亂效果。其實(shí)恰恰相反,經(jīng)過(guò)選擇的各種操作,獲得了一個(gè)非常有用的性質(zhì):加密和解密可使用相同的算法,即DES算法是對(duì)稱的。?
??? DES使用相同的函數(shù)來(lái)加密或解密每個(gè)分組是可能的,二者唯一的不同之處在于密鑰的次序相反。就是說(shuō),如果各輪的加密密鑰分別是K1、K2、K3……K16,則解密密鑰就是K16、K15、K14、……K1,為各輪產(chǎn)生密鑰的算法也是循環(huán)的。密鑰向右移動(dòng),每次移動(dòng)的次數(shù)分別是0、1、2、2、2、2、2、2、1、2、2、2、2、2、2、1。?
??? void DES_JieMiFunction()?
??? {??? ……?
??????? GetDlgItemText(IDC_EDIT2,m_cfile);?????? //獲取密文???????? ……//判斷密文是否是8 B?
??????? GetDlgItemText(IDC_EDIT1,m_key);??????? //獲取密鑰?
??? ……?? //判斷密鑰是否是8 B,將密鑰保存到數(shù)組中?
??????? chartobits(inkey,keybts);?? ? //密鑰字符轉(zhuǎn)化為比特流?
??? ……???????????????????? //將密文字符串中的空格去掉?
??? ……??????????? //將十六進(jìn)制的密文數(shù)轉(zhuǎn)化為二進(jìn)制?
??????? InitIP(inbts,Rbts,Lbts);//初始置換?
??????? pc1tran(keybts,Cbts28,Dbts28);//pc-1置換?
??????? ……//16輪密鑰循環(huán),pc-2置換?
??????? ……//經(jīng)過(guò)16輪運(yùn)算后得到Lbts,Rbts?
??????? FinalIP(Rbts,Lbts,outbts);//末置換?
??? ……//將明文二進(jìn)制結(jié)果轉(zhuǎn)化為字符?
??????? Show_Text(m_mfile);?????????? //在文本框中顯示明文?
??? }?
4 系統(tǒng)功能與測(cè)試?
4.1 界面介紹?
??? 本平臺(tái)主要包括加密和解密兩大基本模塊,下面將對(duì)平臺(tái)的設(shè)計(jì)過(guò)程做詳細(xì)介紹。?
??? (1) 加密模塊界面?
??? 在加密模塊中,將16輪變換過(guò)程中的密文和密鑰顯示出來(lái),同時(shí)該模塊還將加密過(guò)程的內(nèi)部變化過(guò)程,如E盒擴(kuò)充、與密鑰進(jìn)行異或、S盒替換、P盒置換等操作單獨(dú)顯示其變換前后密文的變化情況,方便了解加密的具體過(guò)程;加密模塊可以同時(shí)顯示出每一輪的密鑰和密文。經(jīng)過(guò)一系列變換后,加密模塊顯示出最終的十六進(jìn)制密文。?
??? (2) 解密模塊界面?
??? 該解密模塊界面中將接收到的經(jīng)過(guò)加密后的密文與密鑰輸入到該界面的文本框中,該模塊經(jīng)過(guò)變換后將密文還原成與其對(duì)應(yīng)的明文。?
4.2 演示效果測(cè)試?
??? 平臺(tái)實(shí)現(xiàn)后,分別對(duì)該平臺(tái)的加密和解密模塊的效果進(jìn)行了測(cè)試。?
??? (1) 加密效果測(cè)試?
??? 本文使用系統(tǒng)隨機(jī)產(chǎn)生的密鑰對(duì)輸入的明文進(jìn)行加密效果測(cè)試。點(diǎn)擊加密界面的“點(diǎn)擊此處產(chǎn)生隨機(jī)密鑰” 按鈕產(chǎn)生隨機(jī)密鑰:wlO6214G,同時(shí)輸入明文:12點(diǎn)總攻。如圖6所示,可以查看16輪變換過(guò)程中每一輪密鑰和密文的具體值。點(diǎn)擊“產(chǎn)生十六進(jìn)制密文”按鈕,平臺(tái)顯示最終的加密密文:fa 59 9f f0 1a f4 d7 11。?
?
?
??? 圖7所示為加密過(guò)程中,某一輪函數(shù)F(Ri,Ki+1)計(jì)算過(guò)程中密文內(nèi)部變換的演示,點(diǎn)擊“E盒擴(kuò)充”、“與密鑰進(jìn)行異或” “S盒替換”和“P盒置換”等按鈕,文本框中將顯示出該輪變換中相應(yīng)操作前后密文的變化情況。?
?
?
??? (2) 解密效果測(cè)試?
??? 加密過(guò)程結(jié)束后,記住加密過(guò)程所使用的密鑰與密文,在解密模塊的界面上相應(yīng)文本框中輸入密鑰與密文,如圖8所示。點(diǎn)擊“解密”按鈕,平臺(tái)顯示出與密文相對(duì)應(yīng)的明文:12點(diǎn)總攻。 ?
?
?
??? 基于MFC的DES算法的可視化演示平臺(tái),可方便觀測(cè)DES加/解密操作中各階段密文和密鑰的變化過(guò)程,本文提供了可用于網(wǎng)絡(luò)安全教學(xué)過(guò)程的DES算法可視化演示平臺(tái)。今后將進(jìn)一步完善該平臺(tái),使其可以實(shí)現(xiàn)3DES過(guò)程的可視化演示;同時(shí)還將使平臺(tái)能夠通過(guò)自動(dòng)讀取文件實(shí)現(xiàn)批量數(shù)據(jù)的加密,將最終的密文寫入到文件中。?
參考文獻(xiàn)?
[1]?中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告[EB/OL]. http://tech.qq.com/a/20080724/000277.htm. 2008-9-27.?
[2]?趙戰(zhàn)生,杜虹,呂述望. 信息安全保密教程[M]. 合肥:中國(guó)科學(xué)技術(shù)大學(xué)出版社,2006:278-284.?
[3] 許茂智,游林.信息安全與密碼學(xué)[M]. 北京: 清華大學(xué)出版社,2007:61-70.?
[4]?SPILLMAN R. 經(jīng)典密碼學(xué)與現(xiàn)代密碼學(xué)[M]. 葉阮健,曹英,張長(zhǎng)富,譯.北京:清華大學(xué)出版社,2005:125-141.?
[5]?BAUER F L. 密碼編碼和分析學(xué)原理與方法[M].吳世忠,宋曉龍,李守鵬,譯. 北京:機(jī)械工業(yè)出版社, 2001.