基于EEE3模式的3DES密碼算法實(shí)現(xiàn)_第1頁(yè)
基于EEE3模式的3DES密碼算法實(shí)現(xiàn)_第2頁(yè)
基于EEE3模式的3DES密碼算法實(shí)現(xiàn)_第3頁(yè)
基于EEE3模式的3DES密碼算法實(shí)現(xiàn)_第4頁(yè)
基于EEE3模式的3DES密碼算法實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 基于EEE3模式的3DES算法加密和解密的實(shí)現(xiàn)課程名稱: 密碼算法程序設(shè)計(jì) 目錄1引言11.1任務(wù)概要11.2運(yùn)行環(huán)境和開(kāi)發(fā)環(huán)境21.3密碼算法原理簡(jiǎn)單介紹22密碼算法程序各模塊詳細(xì)設(shè)計(jì)32.1核心模塊主要實(shí)現(xiàn)算法的流程42.1.1單次DES加密42.1.2DES算法一輪結(jié)構(gòu)變換52.1.3初始置換與逆置換表52.1.4Ip置換62.1.5E盒拓展62.1.6S盒置換72.1.7P盒置換92.2核心模塊的函數(shù)說(shuō)明和實(shí)現(xiàn)方式92.2.1字符轉(zhuǎn)換二進(jìn)制92.2.2二進(jìn)制轉(zhuǎn)換十六進(jìn)制102.2.3F函數(shù)112.2.4S盒變換122.2.5輪密鑰產(chǎn)生過(guò)程132.2.6單次DES加密143程序測(cè)試16

2、3.1程序測(cè)試過(guò)程164密碼算法課程設(shè)計(jì)實(shí)踐總結(jié)225參考文獻(xiàn)221 引言隨著計(jì)算機(jī)網(wǎng)絡(luò)和Internet的發(fā)展,全球信息化己成為人類社會(huì)發(fā)展的大趨勢(shì)。在今天的信息社會(huì)里,科學(xué)技術(shù)的研究和發(fā)展及商業(yè)等方面,無(wú)一不與信息息相關(guān),數(shù)據(jù)安全保密問(wèn)題也日益突出,人們不能靠用降低信息共享度的簡(jiǎn)單方法來(lái)解決問(wèn)題,唯一可行的方案是積極解決信息共享和網(wǎng)絡(luò)安全的問(wèn)題。由于計(jì)算網(wǎng)絡(luò)具有聯(lián)結(jié)形式多樣性、終端分布不均勻性和網(wǎng)絡(luò)開(kāi)放性等特征,致使網(wǎng)絡(luò)容受到黑客及惡意軟件和其他不軌的攻擊,Internet的安全問(wèn)題已經(jīng)成為了信息發(fā)展的一塊絆腳石。本課題研究的是DES加密算法,本算法是經(jīng)歷20多年的考驗(yàn),抗住了多年的密碼分

3、析的經(jīng)典算法。隨著信息技術(shù)的發(fā)展和越來(lái)越廣泛的應(yīng)用,整個(gè)社會(huì)的運(yùn)轉(zhuǎn)越來(lái)越密切地依賴于信息技術(shù),依賴于各種基礎(chǔ)信息系統(tǒng)的正常運(yùn)轉(zhuǎn),依賴于儲(chǔ)存在信息系統(tǒng)中各種重要信息的正確維護(hù)和正常使用。信息安全問(wèn)題,可以說(shuō)是關(guān)系到國(guó)家社會(huì)的穩(wěn)定安全、企業(yè)的興衰存亡,公眾的生活幸福,這個(gè)問(wèn)題將顯得越來(lái)越重要。在我國(guó),近年來(lái)信息安全問(wèn)題也日益突出,信息安全和網(wǎng)絡(luò)安全問(wèn)題也成為社會(huì)性問(wèn)題,不僅政府部門、金融部門重視,而且企事業(yè)單位和個(gè)人都日益重視這一重要問(wèn)題。所以,網(wǎng)上信息的安全和保密是信息時(shí)代的迫切需要。如何保護(hù)信息的安全使之不被竊取及不至于被篡改或破壞,己成為當(dāng)今被普遍關(guān)注的重大問(wèn)題;如何充分利用現(xiàn)有的技術(shù)手段來(lái)

4、保護(hù)已有信息的安全是一個(gè)有廣泛應(yīng)用前景的課題。在眾多加密算法中每種算法都有自己的優(yōu)缺點(diǎn),相比較而言,對(duì)稱密鑰算法(如DES)速度要比RSA快的多。如果想在網(wǎng)絡(luò)上實(shí)現(xiàn)非常高的傳輸速率,就必須選擇對(duì)稱密鑰算法進(jìn)行加密。RSA還有另外一個(gè)問(wèn)題就是密鑰長(zhǎng)度很長(zhǎng),這使它在許多網(wǎng)絡(luò)上傳播也帶來(lái)了復(fù)雜性。另外RSA在軟件的實(shí)現(xiàn)時(shí)間上也遠(yuǎn)遠(yuǎn)不及DES。并且DES經(jīng)歷里20多年的考驗(yàn),抗住了多年的密碼分析,所以在一切都講究速率的今天,DES在國(guó)內(nèi)外還是有應(yīng)用價(jià)值的。由前面的介紹可知,DES算法是一個(gè)比較優(yōu)秀的加密算法。但由于計(jì)算機(jī)網(wǎng)絡(luò)的飛速發(fā)展,DES算法的安全性也漸漸受到挑戰(zhàn),于是出現(xiàn)了DES的變形算法多重D

5、ES。本論文的工作就是用C語(yǔ)言實(shí)現(xiàn)基于EEE3模式下的3DES算法。1.1 任務(wù)概要實(shí)現(xiàn)3DES算法的EEE3模式(1)實(shí)現(xiàn)3DES算法的加密和解密,完成DES加密過(guò)程,輸入明文,能加密得到正確密文(密文以十六進(jìn)制顯示)。完成DES解密過(guò)程,輸入密文(十六進(jìn)制),能解密得到正確明文(字符形式)。(2)明文加密之后密文,必須能正確解密出相應(yīng)明文(3)明文尾部必須進(jìn)行填充。例如ECB模式下,DES算法8個(gè)字符一組,若輸入10個(gè)字符“1111111111”,則需要分為2組,第1組8個(gè)字符,第2組2個(gè)字符,則需要填充。若輸入8個(gè)字符“11111111”,剛好1組,則需要填充增加1組明文。(4)尾部填充

6、方法為除最后一個(gè)字符填充字符數(shù),其余全填充為“0”字符。例如輸入明文“1111111111”,第1組明文輸入“11111111”,第二組填充之后明文“11000006”。如輸入明文“11111111”,第1組明文輸入“11111111”,第二組填充之后明文“00000008”。(5)DES算法加密和解密,調(diào)用變換函數(shù)完成。(6)操作簡(jiǎn)單,界面美觀。輸出要求:(1)用函數(shù)實(shí)現(xiàn)把字符與二進(jìn)制相互轉(zhuǎn)換過(guò)程,并輸出轉(zhuǎn)換后的結(jié)果;用函數(shù)實(shí)現(xiàn)十六進(jìn)制與二進(jìn)制相互轉(zhuǎn)換過(guò)程。(2)中間結(jié)果包括:3DES算法中,3次調(diào)用加密或解密的輸出(十六進(jìn)制)。1.2 運(yùn)行環(huán)境和開(kāi)發(fā)環(huán)境本程序使用c語(yǔ)言編寫,編譯成功會(huì)生成

7、exe文件。運(yùn)行環(huán)境:windows開(kāi)發(fā)環(huán)境:visual c+1.3 密碼算法原理簡(jiǎn)單介紹3DES(或稱為Triple DES)是三重?cái)?shù)據(jù)加密算法(TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。它相當(dāng)于是對(duì)每個(gè)數(shù)據(jù)塊應(yīng)用三次DES加密算法。由于計(jì)算機(jī)運(yùn)算能力的增強(qiáng),原版DES密碼的密鑰長(zhǎng)度變得容易被暴力破解;3DES即是設(shè)計(jì)用來(lái)提供一種相對(duì)簡(jiǎn)單的方法,即通過(guò)增加DES的密鑰長(zhǎng)度來(lái)避免類似的攻擊,而不是設(shè)計(jì)一種全新的塊密碼算法。3DES算法使用3條56位的密鑰對(duì)數(shù)據(jù)進(jìn)行三次加密。3DES(即Triple DES)是DES向AES過(guò)渡的加密算法(199

8、9年,NIST將3-DES指定為過(guò)渡的加密標(biāo)準(zhǔn))。其具體實(shí)現(xiàn)如下:設(shè)Ek()和Dk()代表DES算法的加密和解密過(guò)程,K代表DES算法使用的密鑰,P代表明文,C代表密文,這樣:3DES加密過(guò)程為:C=Ek3(Ek2(Ek1(P)3DES解密過(guò)程為:P=Dk1(D2(Dk3(C)2 密碼算法程序各模塊詳細(xì)設(shè)計(jì)輸入mode程序流程:解密模式加密模式輸入明文輸入密文Key3Key1第一次加密第一次解密Key2Key2第二次解密第二次加密Key1Key3第三次加密第三次解密輸出明文輸出密文2.1 核心模塊主要實(shí)現(xiàn)算法的流程2.1.1 單次DES加密2.1.2 DES算法一輪結(jié)構(gòu)變換2.1.3 初始置換

9、與逆置換表2.1.4 Ip置換DES算法,IP置換的功能是把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L(zhǎng)0、R0兩部分,每部分各長(zhǎng)32位,其置換規(guī)則見(jiàn)下表:2.1.5 E盒拓展E盒擴(kuò)展的作用是把32比特的輸入擴(kuò)展成48比特,擴(kuò)展的方式如下圖所示,把輸入的32比特從左到右編號(hào)為1,2,3.。32,并把 這32比特寫成每行4個(gè),共8行的形式。然后把第i-1行最右比特和第i+1行最左比特添加到第i行的左邊和右邊,這樣就得到了48bit的輸出。(即c1c2c3c4c5c6 = m32m1m2m3m4m5 . 以此類推)。2.1.6 S盒置換S盒的作用是將輸入的48比特?cái)?shù)據(jù)壓縮為32比特。8個(gè)6進(jìn)4出

10、的S盒如下圖所示,每個(gè)S盒有4行,記為第0,1,2,3行,有16列,記為第0,1,2,3.。,15列。以s6為例解釋s盒的使用方法:對(duì)于6位輸入b1b2b3b4b5b6,用b1b6組成的二進(jìn)制數(shù)表示行標(biāo),b2b3b4b5組成的二進(jìn)制數(shù)表示列標(biāo),查s盒的表,表中的十進(jìn)制數(shù)字轉(zhuǎn)為4位二進(jìn)制即為輸出2.1.7 P盒置換P盒置換是對(duì)S盒變換后的32比特?cái)?shù)據(jù)進(jìn)行比特置換,置換后得到的32比特?cái)?shù)據(jù)即為f函數(shù)的輸出。P盒置換的方式和初始置換相同,如c1c2c3c4 = m16m7m20m21 . 如下圖所示,以此類推。2.2 核心模塊的函數(shù)說(shuō)明和實(shí)現(xiàn)方式2.2.1 字符轉(zhuǎn)換二進(jìn)制void CharToBit

11、(char *message, char* bits,int num)int i,j;char tmp;for(i=0;inum/8;i+)tmp = messagei;for(j=0;j 1000 0000b 判斷tmp的最高位 為1運(yùn)行后面語(yǔ)句 為0運(yùn)行else語(yǔ)句bitsi*8+j=1;else bitsi*8+j=0;tmp=1;2.2.2 二進(jìn)制轉(zhuǎn)換十六進(jìn)制void BitsToHex(char *enCrypt)char ch=0;int i,j;printf(n);for(i=0;i16;i+)for(j=0;j4;j+)ch48bits) */transf_table(Righ

12、t,E_Table, 48);/* 右半部份與子密鑰異或 */Xor(Right, subKeyi, 48);/* S盒壓縮(48bits-32bits) */S_box(Right,s_box);/* mov s_box32 to Right */for(i=0;i32;i+)Righti = s_boxi;/* P盒置換 */transf_table(Right,P_Table,32);2.2.4 S盒變換void S_box(char *Right, char *bits) /* 第一個(gè)參數(shù)6*8bits,第二個(gè)參數(shù)4*8bits */int i,j;int x=0,y=0;/x儲(chǔ)存行號(hào)

13、(每6bits的第1和最后1bit構(gòu)成),y儲(chǔ)存列號(hào)(中間4bits構(gòu)成)char tmp=0;for(i=0;i8;i+)x=0; y=0;x=Righti*6&0x1;x=1;x|=Righti*6+5&0x1;for(j=1;j5;j+)y=1;y|=Righti*6+j &0x1; / get ytmp=S_Boxixy; for(j=0;j4;j+)/將對(duì)應(yīng)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制if(tmp&0x08) bitsi*4+j=1;else bitsi*4+j=0;tmp=1;2.2.5 輪密鑰產(chǎn)生過(guò)程void produce_key(char *input_keys) int i,j;c

14、har *temp_PC2;char keyBits64;char k_Right28,k_Left28;CharToBit(input_keys,keyBits,64);transf_table(keyBits,PC1_Table,56);/經(jīng)過(guò)置換選擇PC-1,將初始密鑰的8bits奇偶校驗(yàn)碼去掉for(i=0;i28;i+)k_Righti=keyBitsi+28; /* set left, right */k_Lefti=keyBitsi;i=0;while(i16)Row(k_Right,Move_Tablei);Row(k_Left, Move_Tablei);temp_PC2=(

15、char*)malloc(sizeof(char)*56);for(j=0;j28;j+)/將移位后的左右兩部分連結(jié)成56bits數(shù)據(jù)temp_PC2j+28=k_Rightj;temp_PC2j=k_Leftj;transf_table(temp_PC2,PC2_Table,48);/進(jìn)入置換選擇PC-2進(jìn)行重排壓縮for(j=0;j48;j+)subKeyij=temp_PC2j;/產(chǎn)生子密鑰i+;2.2.6 單次DES加密void desDecode(char *enCrypt,int isEncode)int i=0,j=0;char ch=0;char tmp32;char deCr

16、ypt64=0;char Right32,Left32;/* IP置換 */transf_table(enCrypt,IP_Table,64);for(i=0;i32;i+)Righti=enCrypti+32;Lefti=enCrypti;tmpi=enCrypti+32; /* save Right */* running 16 times F function and xor ,R-L */for(i=0;i16;i+)if(isEncode=0)F_func(Right,i); /加密過(guò)程調(diào)用else F_func(Right,15-i);/解密過(guò)程調(diào)用Xor(Right,Left,3

17、2);/* copy old right to left */for(j=0;j32;j+)Leftj=tmpj;/* save right to tmp */for(j=0;j32;j+)tmpj=Rightj;/* finish */for(i=0;i32;i+)enCrypti=Righti;enCrypti+32=Lefti;/* IP reaverse */transf_table(enCrypt,IPR_Table,64);3 程序測(cè)試3.1 程序測(cè)試過(guò)程Mode:0(加密)明文:computerKey1:01234567Key2:12345678Key3:76543210測(cè)試結(jié)果

18、:明文二進(jìn)制:0 1 1 0 0 0 1 10 1 1 0 1 1 1 10 1 1 0 1 1 0 10 1 1 1 0 0 0 00 1 1 1 0 1 0 10 1 1 1 0 1 0 00 1 1 0 0 1 0 10 1 1 1 0 0 1 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 1 0 0 0 =加密過(guò)程=*第一次加密:*144ed4ef112ce60e313eccddf188dfdf*第二次加密

19、:*a83efab6f9ef908dbf296c1b50f218a5*第三次加密:*532607c339ac83603fc80148673ea262Mode:1(解密)密文:5 3 2 6 0 7 c 3 3 9 a c 8 3 6 0 3 f c 8 0 1 4 8 6 7 3 e a 2 6 2測(cè)試結(jié)果:0 1 0 1 0 0 1 10 0 1 0 0 1 1 00 0 0 0 0 1 1 11 1 0 0 0 0 1 10 0 1 1 1 0 0 11 0 1 0 1 1 0 01 0 0 0 0 0 1 10 1 1 0 0 0 0 00 0 1 1 1 1 1 11 1 0 0 1 0 0 00 0 0 0 0 0 0 10 1 0 0 1 0 0 00 1 1 0 0 1 1 10 0 1 1 1 1 1 01 0 1 0 0 0 1 00 1 1 0 0 0 1 0 =解密過(guò)程=*第一次解密:*a83efab6f9ef908dbf296c1b50f218a5*第二次解密:*144ed4ef112ce60e313eccddf188dfdf*第三次解密:*636f6d70757465

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論