版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 一、綜合設(shè)計(jì)目的、條件、任務(wù)和內(nèi)容要求:1.綜合設(shè)計(jì)目的:(1)課程設(shè)計(jì)是課程教學(xué)中的一項(xiàng)重要內(nèi)容,是完成教學(xué)計(jì)劃達(dá)到教學(xué)目標(biāo)的重要環(huán)節(jié),是教學(xué)計(jì)劃中綜合性較強(qiáng)的實(shí)踐教學(xué)環(huán)節(jié),它對(duì)幫助學(xué)生全面牢固地掌握課堂教學(xué)內(nèi)容、培養(yǎng)學(xué)生的實(shí)踐和實(shí)際動(dòng)手能力、提高學(xué)生全面素質(zhì)具有很重要的意義。密碼學(xué)是一門(mén)理論性和實(shí)用性都很強(qiáng)的課程,也是密碼學(xué)課程設(shè)計(jì)環(huán)節(jié)應(yīng)占有重要的地位,密碼技術(shù)為現(xiàn)代電子商務(wù)、網(wǎng)絡(luò)安全等必修之工具;(2)使學(xué)生對(duì)
2、于密碼學(xué)算法如何實(shí)現(xiàn)加密與解密有更加深入的理解,了解數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)算法; (3)提高學(xué)生在應(yīng)用C語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)編寫(xiě)大型算法的能力;2.綜合設(shè)計(jì)條件:Windows XP 操作系統(tǒng),Visual C++6.0軟件。3.綜合設(shè)計(jì)任務(wù):實(shí)現(xiàn)DES對(duì)稱(chēng)密碼算法的設(shè)計(jì)和實(shí)現(xiàn),并能夠在Visual C++6.0版的軟件開(kāi)發(fā)環(huán)境中運(yùn)行并得到正確的結(jié)果。4.內(nèi)容要求:密碼學(xué)課程設(shè)計(jì)是一個(gè)實(shí)踐環(huán)節(jié),它使學(xué)生自己能夠?qū)崿F(xiàn)出可以加密和解密的編碼,并能
3、夠正確的理解源代碼的含義和一些主要函數(shù)的作用和用法,在理解的基礎(chǔ)上正確完整的編寫(xiě)出程序代碼并在編寫(xiě)環(huán)境中正常的運(yùn)行出正確的結(jié)果,編寫(xiě)環(huán)境為V</p><p><b> 目 錄</b></p><p> 摘 要 ……………………………………………………………………………………… II</p><p> Abstract …………………………
4、………………………………………………………... II</p><p> 第一章 概論……………………………………………………..………………………… 1</p><p> 1.1 課題背景…………………………………………………………………...……...……1</p><p> 1.2 課題意義………………………………………………..………………………
5、…… 2</p><p> 第二章DES算法設(shè)計(jì)簡(jiǎn)介及方案論述 ………………………………………………….. 3</p><p> 2.1 設(shè)計(jì)簡(jiǎn)介……………………………………………………..…………………………3 </p><p> 2.2 設(shè)計(jì)方案………………………………………………..………………………….…3 </p><p&g
6、t; 2.2.1 DES的加密過(guò)程…………………………………..………………………….……4</p><p> 2.2.1 DES的解密過(guò)程…………………………………..………………………….……5</p><p> 第三章DES算法詳細(xì)設(shè)計(jì)………………………………………………..……………….. 6</p><p> 3.1 子密鑰的產(chǎn)生…………
7、…………………………..………………………….…………6 </p><p> 3.2 初始值換IP……………………………………..………………………….…………7</p><p> 3.3 加密函數(shù)……………………………………..………………………….……………7</p><p> 3.4 逆初始值換……………………………………..……………………
8、…….……9</p><p> 第四章設(shè)計(jì)結(jié)果及分析…………………………………………………..……………….. 10</p><p> 4.1 設(shè)計(jì)結(jié)果……………………………………….………………………………..….…10 </p><p> 4.2 設(shè)計(jì)結(jié)果分析……………………………………………..………………………….12 </p>&
9、lt;p> 總 結(jié) …….……………………………………………………..………………………….13 </p><p> 致 謝 …….……………………………………………………..………………………….14 </p><p> 參考文獻(xiàn) …….………………..………………………………..………………………….15 </p><p> 附錄 主要程序代碼
10、………...………………………………..………………………….15 </p><p><b> 摘 要</b></p><p> DES(Data Encryption Standard)算法是美國(guó)國(guó)家標(biāo)準(zhǔn)局(NIST)于1977年公布由IBM公司研制的一種加密算法,并且批準(zhǔn)它作為非機(jī)要部門(mén)使用的數(shù)據(jù)加密標(biāo)準(zhǔn)。自從公布以來(lái),它一直超越國(guó)界,成為國(guó)際上商用保密通信
11、和計(jì)算機(jī)通信的最常用的加密算法。DES也是曾被廣泛使用的分組密碼,遍及世界的政府,銀行和標(biāo)準(zhǔn)化組織把DES作為安全和論證通信的基礎(chǔ)。DES算法公開(kāi)是密碼學(xué)史上里程碑式的事件。</p><p> DES算法是分組密鑰,每次處理64位的明文數(shù)據(jù),形成64位的密文。DES也是一個(gè)對(duì)稱(chēng)算法,加密解密使用相同的算法和密鑰,密鑰長(zhǎng)度為56位,可以為任意的56位的數(shù),且隨時(shí)可更換。此次設(shè)計(jì)主要是對(duì)DES數(shù)據(jù)加密標(biāo)準(zhǔn)原理和流程
12、的描述,D從初始變換、DES的迭代過(guò)程、密鑰變換和逆置換等四個(gè)方面開(kāi)始研究的,并且用Visual C++語(yǔ)言實(shí)現(xiàn)了它的模擬應(yīng)用。</p><p> 關(guān)鍵詞:加密;解密;DES算法;Visual C++</p><p><b> Abstract</b></p><p> DES (Data Encryption Standard) alg
13、orithm is that National institute of standards and technology (NIST) announced a kind of encryption algorithm developed by IBM in 1977,and approve for it as whether datum that confidential developments use encrypt standa
14、rd. Since announcing, it has been surmounting the national boundaries all the time, and has been come the most frequently used of encryption algorithm in the communication of commercial secret and computer in the world .
15、DES block ciphers that enj</p><p> The key that DES algorithm divides into groups, data are encrypted in 64-bit block each time, form the cipher texts of 64. DES is a symmetrical algorithm too. The same ste
16、ps, with the same key, are used to reverse the encryption, the key length is 56-bit, and can be the numbers of 56 wanton, and can change at any time. This text is mainly description that encrypts the standard principle a
17、nd process to the data of DES ,and analyses the basic principle of DES encryption algorithm, separately from </p><p> Keywords: Encrypt; Decrypt; DES algorithm; VC++ programming</p><p><b>
18、; 第一章 概論</b></p><p> 本章主要介紹了課題《DES對(duì)稱(chēng)密碼的算法的設(shè)計(jì)與實(shí)現(xiàn)》的設(shè)計(jì)背景和意義,提出在當(dāng)今的信息化時(shí)代,信息安全是至關(guān)重要的,密碼技術(shù)更是確保信息安全的關(guān)鍵。</p><p><b> 1.1 課題背景</b></p><p> 隨著計(jì)算機(jī)和網(wǎng)絡(luò)在軍事、政治、金融、工業(yè)、商業(yè)等部門(mén)的廣
19、泛應(yīng)用,社會(huì)對(duì)計(jì)算機(jī)和網(wǎng)絡(luò)的依賴(lài)越來(lái)越大,科學(xué)技術(shù)的研究和發(fā)展及其在商業(yè)領(lǐng)域的應(yīng)用等方面,無(wú)一不與信息息息相關(guān)。所以信息就是生命,信息就是時(shí)間,信息就是財(cái)富。由于信息是共享的,信息的擴(kuò)散會(huì)產(chǎn)生社會(huì)影響,所以保護(hù)信息的安全是信息時(shí)代的迫切需要。如果計(jì)算機(jī)和網(wǎng)絡(luò)系統(tǒng)的信息安全受到破壞將導(dǎo)致社會(huì)的混亂并造成巨大損失。因此,確保計(jì)算機(jī)和網(wǎng)絡(luò)系統(tǒng)的信息安全已成為世人關(guān)注的社會(huì)問(wèn)題和計(jì)算機(jī)科學(xué)與技術(shù)領(lǐng)域的研究熱點(diǎn)。</p><p
20、> 當(dāng)前,以Internet為代表的計(jì)算機(jī)網(wǎng)絡(luò)的迅速發(fā)展和廣泛應(yīng)用,正引起社會(huì)和經(jīng)濟(jì)的深刻變革,極大地改變著人們的生活和工作方式。Internet已經(jīng)成為我們生活和工作中一個(gè)不可缺少的組成部分。對(duì)此,發(fā)展我國(guó)的電子政務(wù)、電子商務(wù)和電子金融已成為建設(shè)具有中國(guó)特色社會(huì)主義強(qiáng)國(guó)的不可回避的選擇。然而,目前影響電子政務(wù)、電子商務(wù)、電子金融應(yīng)用的主要技術(shù)障礙是信息安全問(wèn)題。由于Internet原來(lái)缺少安全設(shè)計(jì),再加上Internet的開(kāi)放
21、性和無(wú)政府狀態(tài),使Internet成為一個(gè)不安全的網(wǎng)絡(luò)。這就使得Internet不能適應(yīng)電子政務(wù)、電子商務(wù)和電子金融等系統(tǒng)對(duì)信息安全的要求。確保信息的安全就必須加強(qiáng)加密技術(shù),加密技術(shù)是基于密碼學(xué)原理來(lái)實(shí)現(xiàn)計(jì)算機(jī)、網(wǎng)絡(luò)乃至一切信息系統(tǒng)安全的理論與技術(shù)基礎(chǔ)。</p><p> 1977年美國(guó)頒布了數(shù)據(jù)加密標(biāo)準(zhǔn)DES(Data Encryption Stantard),這是密碼史上的一個(gè)創(chuàng)舉。DES算法最初由美國(guó)IB
22、M公司設(shè)計(jì),經(jīng)美國(guó)國(guó)家安全局評(píng)測(cè)后,頒布為標(biāo)準(zhǔn)。DES開(kāi)創(chuàng)了向世人公開(kāi)加密算法的先例。自從公布以來(lái),它一直超越國(guó)界,成為國(guó)際上商用保密通信和計(jì)算機(jī)通信的最常用的加密算法。DES也是曾被廣泛使用的分組密碼,遍及世界的政府,銀行和標(biāo)準(zhǔn)化組織把DES作為安全和論證通信的基礎(chǔ)。DES算法公開(kāi)是密碼學(xué)史上里程碑式的事件。</p><p> 加密算法的原理:密碼體制從原理上可分為2大類(lèi),即單鑰密碼體制和雙鑰密碼體制。前者常
23、被用于數(shù)字簽名,后者常被用于保密通信。加密算法的應(yīng)用誤區(qū):DES算法具有極高的安全性,到目前為止,除了用窮舉搜索法對(duì)DES算法進(jìn)行攻擊外,還沒(méi)有發(fā)現(xiàn)更有效的辦法。加密算法的實(shí)際應(yīng)用:利用匯編語(yǔ)言實(shí)現(xiàn)DES加密、DES算法的VLSI實(shí)現(xiàn)、FPGA上的DES算法實(shí)現(xiàn)。通過(guò)自己對(duì)加密算法的學(xué)習(xí)研究提出了自己對(duì)于加密算法的改進(jìn)思想:隨著計(jì)算機(jī)技術(shù)的突飛猛進(jìn),即使利用窮舉的方法也只需付出較小的代價(jià)就可以在幾天內(nèi)完成破解的要求。為了加強(qiáng)DES算法的
24、加密強(qiáng)度,人們進(jìn)行了一些改良以及一種基于DES和RSA的改良機(jī)密方案,RSA加密算法是根據(jù)尋求兩個(gè)大素?cái)?shù)比較簡(jiǎn)單,而將它們的乘積分解開(kāi)則極其困難這一原理來(lái)設(shè)計(jì)的。它設(shè)計(jì)精巧、安全、方便,是近代密碼的世界標(biāo)準(zhǔn),為確保數(shù)據(jù)安全作出了重大貢獻(xiàn)。DES的設(shè)計(jì)充分體現(xiàn)了Shannon信息保密理論所闡述的設(shè)計(jì)密碼的思想,標(biāo)志著密碼的設(shè)計(jì)與分析達(dá)到了新的水平。</p><p> 1.2 課題意義</p>&
25、lt;p> 世界主要工業(yè)國(guó)家中每年因計(jì)算機(jī)犯罪所造成的經(jīng)濟(jì)損失令人吃驚,據(jù)美國(guó)FBIde調(diào)查報(bào)告。美國(guó)每年因利用計(jì)算機(jī)犯罪所造成的經(jīng)濟(jì)損失就高達(dá)1 700多億美元,遠(yuǎn)遠(yuǎn)超過(guò)了普通經(jīng)濟(jì)犯罪所造成的經(jīng)濟(jì)損失。據(jù)美國(guó)的一項(xiàng)調(diào)查報(bào)告,由40%的被調(diào)查者承認(rèn)在他們的機(jī)構(gòu)中曾發(fā)生過(guò)利用計(jì)算機(jī)犯罪的事件。在我國(guó),利用計(jì)算機(jī)犯罪的案例也在迅速上升。</p><p> 社會(huì)的信息化導(dǎo)致第三次軍事革命,信息戰(zhàn)、網(wǎng)絡(luò)戰(zhàn)成為新
26、的作戰(zhàn)形式,數(shù)字化部隊(duì)和數(shù)字化戰(zhàn)場(chǎng)已經(jīng)誕生。過(guò)去被認(rèn)為是科學(xué)幻想的計(jì)算機(jī)病毒,線已活生生地出現(xiàn)在我們的面前,對(duì)于計(jì)算機(jī)系統(tǒng)的安全構(gòu)成極大的威脅。面對(duì)如此嚴(yán)重危害計(jì)算機(jī)和網(wǎng)絡(luò)信息安全的種種威脅,必須采取措施確保計(jì)算機(jī)和網(wǎng)絡(luò)的信息安全。特別是中美“黑客”網(wǎng)絡(luò)大戰(zhàn)等事件,使我們清醒地認(rèn)識(shí)到,為了確保國(guó)家的安全,必須建立我國(guó)自己的信息安全體系。</p><p> 國(guó)際標(biāo)準(zhǔn)化組織ISO在其網(wǎng)絡(luò)安全體系設(shè)計(jì)標(biāo)準(zhǔn)(ISO 7
27、498—2)中定義了計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的六大安全服務(wù)功能:身份認(rèn)證服務(wù)、訪問(wèn)控制服務(wù)、數(shù)據(jù)加密服務(wù)、數(shù)據(jù)完整性服務(wù)、不可否認(rèn)服務(wù)和安全審計(jì),比較全面地描述了計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)安全的內(nèi)涵,而且強(qiáng)調(diào)了信息安全的服務(wù)職能。</p><p> 隨著信息技術(shù)的發(fā)展和應(yīng)用,人們對(duì)信息安全的認(rèn)識(shí)越來(lái)越全面,越來(lái)越深刻。</p><p> 眾所周知,能源、材料、信息是支撐現(xiàn)代社會(huì)大廈的三根支柱。在這三根支柱中
28、能源和材料是具體的、物質(zhì)的,而信息是抽象的、邏輯的。信息不能脫離信息系統(tǒng)而孤立存在。因此,我們就不能脫離信息系統(tǒng)安全而孤立地談信息安全。換句話說(shuō),當(dāng)我們討論信息安全問(wèn)題時(shí)總是要討論信息系統(tǒng)的安全。</p><p> 信息系統(tǒng)的安全主要包括四個(gè)側(cè)面:設(shè)備安全(Safety and Security of Equipment),數(shù)據(jù)安全(Data Security),內(nèi)容安全(Contents Security)和
29、行為安全(Behavior Security)。</p><p> 信息安全的關(guān)鍵技術(shù)——密碼技術(shù)是一門(mén)古老的技術(shù),大概自人類(lèi)社會(huì)出現(xiàn)戰(zhàn)爭(zhēng)便產(chǎn)生了密碼(Cipher)。由于密碼長(zhǎng)期以來(lái)僅用于政治、軍事、公安、外交等要害部門(mén),其研究本身也只限于秘密進(jìn)行,所以密碼被蒙上神秘的面紗。在軍事上,密碼成為決定戰(zhàn)爭(zhēng)勝負(fù)的重要因素之一。有些軍事評(píng)論家認(rèn)為,盟軍在破譯密碼方面的成功,使第二次世界大戰(zhàn)提前幾年結(jié)束。</p&
30、gt;<p> 然而隨著據(jù)算機(jī)荷通信技術(shù)的迅速發(fā)展和普及應(yīng)用,出現(xiàn)了電子商務(wù)、電子金融等重要的應(yīng)用信息系統(tǒng)。在這些系統(tǒng)中必須確保數(shù)據(jù)的安全保密,因此密碼技術(shù)有了更廣泛的應(yīng)用空間。</p><p> 1977年發(fā)布的DES算法具有極高安全性,到目前為止,除了用窮舉搜索法對(duì)DES算法進(jìn)行攻擊外,還沒(méi)有發(fā)現(xiàn)更有效的辦法。而56位長(zhǎng)的密鑰的窮舉空間為256,這意味著如果一臺(tái)計(jì)算機(jī)的速度是每一秒種檢測(cè)一百
31、萬(wàn)個(gè)密鑰,則它搜索完全部密鑰就需要將近2285年的時(shí)間,可見(jiàn),這是難以實(shí)現(xiàn)的。密碼技術(shù)隨時(shí)都在更新,1999年美國(guó)政府頒布的三重DES為新的密碼標(biāo)準(zhǔn)。因此,要確保信息的安全,具有很強(qiáng)的密碼技術(shù)是很必須的。</p><p> 第二章 設(shè)計(jì)簡(jiǎn)介及設(shè)計(jì)方案論述</p><p> 本章主要是介紹運(yùn)用C++編寫(xiě)出一個(gè)加密和解密的密鑰對(duì)一段文字進(jìn)行加密和解密來(lái)達(dá)到隱秘的傳送信息的目的的程序?qū)崿F(xiàn)的
32、理論基礎(chǔ)。主要介紹了DES算法的加密和解密過(guò)程。</p><p><b> 2.1 設(shè)計(jì)簡(jiǎn)介</b></p><p> 用VC++6.0來(lái)實(shí)現(xiàn)數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)算法的加密和解密。</p><p> DES的設(shè)計(jì)目標(biāo)是,用于加密保護(hù)靜態(tài)存儲(chǔ)和傳輸信道中的數(shù)據(jù),安全使用10—15年。</p><p> DES綜合
33、運(yùn)用了置換、代替、代數(shù)等多種密碼技術(shù)。它設(shè)計(jì)精巧、安全、方便,是近代密碼的世界標(biāo)準(zhǔn),為確保數(shù)據(jù)安全作出了重大貢獻(xiàn)。DES的設(shè)計(jì)充分體現(xiàn)了Shannon信息保密理論所闡述的設(shè)計(jì)密碼的思想,標(biāo)志著密碼的設(shè)計(jì)與分析達(dá)到了新的水平。</p><p> DES是一種分組密碼。明文、密文和密鑰的分組長(zhǎng)度都是64位。</p><p> DES是面向二進(jìn)制的密碼算法,因而能夠加解密任何形式的計(jì)算機(jī)數(shù)據(jù)
34、。</p><p> DES是對(duì)合運(yùn)算,因而加密和解密共用同一算法,從而使工程實(shí)現(xiàn)的工作量減半。</p><p><b> 2.2 設(shè)計(jì)方案</b></p><p> DES 全稱(chēng)為Data Encryption Standard即數(shù)據(jù)加密算法,它是IBM公司研究成功并公開(kāi)發(fā)表的。</p><p> DES算法的
35、入口參數(shù)有三個(gè):Key、Data、Mode。其中Key為8個(gè)字節(jié)共64位,是DES算法的工作密鑰;Data也為8個(gè)字節(jié)64位,是要被加密或被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密或解密。</p><p> 數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)的算法是用于計(jì)算機(jī)數(shù)據(jù)加密保護(hù)的分組加密的數(shù)學(xué)算法,算法以64 bit為一個(gè)分組對(duì)數(shù)據(jù)進(jìn)行加密。使用64 bit的密鑰加密64 bit分組的信息。首先將原始數(shù)據(jù)64 bit
36、明文進(jìn)行初始置換IP,然后與子密鑰(由加密密鑰產(chǎn)生)進(jìn)行一系列迭代運(yùn)算,最后再經(jīng)過(guò)逆置換,即可得到64 bit密文(加密后數(shù)據(jù))。在每一輪中,數(shù)列塊的右邊32 bit數(shù)據(jù)和密鑰(Key)一起傳送給函數(shù)f,函數(shù)f運(yùn)算的結(jié)果再與數(shù)列塊左邊32 bit數(shù)據(jù)進(jìn)行“異或”操作。其中S盒(S選擇函數(shù))是DES算法的心臟,由它實(shí)現(xiàn)非線性變換。解密過(guò)程與此類(lèi)似,只是在應(yīng)用子密鑰時(shí),順序顛倒為k16,k15,…k2,k1。</p><
37、p> DES算法實(shí)現(xiàn)時(shí)用到許多的數(shù)學(xué)知識(shí),子密鑰的產(chǎn)生,初始值換IP,加密函數(shù)以及逆初始值換。</p><p> DES的整體結(jié)構(gòu)如圖2-1所示:</p><p> i=1,2,3,…,16</p><p> 圖2-1 DES的整體結(jié)構(gòu)</p><p> 2.2.1 DES算法的加密過(guò)程</p><p&g
38、t; ?。?)64位密鑰經(jīng)子密鑰產(chǎn)生算法產(chǎn)生出16個(gè)子密鑰:,分別供第一次,第二次,……,第十六次加密迭代使用。</p><p> (2)64位明文首先經(jīng)過(guò)初始置換IP(Initial Permutation),將數(shù)據(jù)打亂重新排列并分成左右兩半。左邊32位構(gòu)成,右邊32位構(gòu)成。</p><p> ?。?)由加密函數(shù)f實(shí)現(xiàn)子密鑰對(duì)的加密,結(jié)果為32位的數(shù)據(jù)組。再與模2相加,又得到一個(gè)32位
39、的數(shù)據(jù)組。以作為第二次加密迭代的,以作為第二次加密迭代的。至此,第一次加密迭代結(jié)束。</p><p> ?。?)第二次加密迭代至第十六次加密迭代的分別用子密鑰進(jìn)行,其過(guò)程與第一次加密迭代相同。</p><p> ?。?)第十六次加密迭代結(jié)束后,產(chǎn)生一個(gè)64位的數(shù)據(jù)組。以其左邊32位作為,以其右邊32位作為,兩者合并再經(jīng)過(guò)逆初始置換,將數(shù)據(jù)重新排列,便得到64位密文。至此加密過(guò)程全部結(jié)束。&
40、lt;/p><p> 綜上可將DES的加密過(guò)程用如下的數(shù)學(xué)公式描述:</p><p> 2.2.2 DES算法的解密過(guò)程</p><p> 由于DES的運(yùn)算是對(duì)和運(yùn)算,所以解密和加密可共用同一個(gè)運(yùn)算,只是子密鑰使用的順序不同。</p><p> 把64位密文當(dāng)做明文輸入,而且第一次解密迭代使用子密鑰,第二次解密迭代使用子密鑰,…,第十六次
41、解密迭代使用子密鑰,最后的輸出便是64位明文。</p><p> 解密過(guò)程可使用如下的數(shù)學(xué)公式描述:</p><p> 過(guò)程如圖2-2所示:</p><p> 圖2-2 解密過(guò)程演示</p><p> 第三章 DES算法詳細(xì)設(shè)計(jì)</p><p> 本章主要介紹了DES的算法細(xì)節(jié),DES算法的細(xì)節(jié)分為子密鑰
42、的產(chǎn)生、初始置換、加密函數(shù)還有逆置換四個(gè)過(guò)程。</p><p> 3.1 子密鑰的產(chǎn)生</p><p> 64位密鑰經(jīng)過(guò)置換選擇1、循環(huán)左移、置換選擇2等變換,產(chǎn)生出16個(gè)48位長(zhǎng)的子密鑰。子密鑰的產(chǎn)生過(guò)程如圖3-1所示。</p><p> 圖3-1 子密鑰產(chǎn)生</p><p> 64位的密鑰分為8個(gè)字節(jié)。每個(gè)字節(jié)的前7位是真正的密
43、鑰位,第8位是奇偶校驗(yàn)位。置換選擇1的作用是:一是從64位密鑰中去掉8個(gè)奇偶校驗(yàn)碼;二是把其余56位密鑰位打亂重排,且將前28位作為,后28位作為。對(duì)密鑰實(shí)施置換選擇1,使得變換以后的密鑰的各個(gè)位與原密鑰位對(duì)應(yīng)關(guān)系如下圖3-2所示:(表一為忽略校驗(yàn)位以后情況).</p><p> 圖3-2 置換選擇1</p><p> 把變換后的密鑰等分成兩部分,前28位記為C[0],后28位記為D
44、[0]。計(jì)算子密鑰(共16個(gè)), 從i=1開(kāi)始。分別對(duì)C[i-1],D[i-1]作循環(huán)左移來(lái)生成C[i],D[i].(共16次)。每次循環(huán)左移位數(shù)如下表3-1所示:</p><p> 表3-1 循環(huán)左移位數(shù)表</p><p> 串聯(lián)C[i],D[i],得到一個(gè)56位數(shù),然后對(duì)此數(shù)作置換選擇2如下圖3-2產(chǎn)生48位子密鑰K[i]。變換過(guò)程如圖3
45、-3,按以上方法計(jì)算出16個(gè)子密鑰。</p><p> 圖3-3 置換選擇2</p><p> 3.2 初始置換IP</p><p> 初始置換IP是DES的第一步密碼變換。初始置換的作用在于將64位明文打亂重排,并分成左、右兩半。左邊32位構(gòu)成,右邊32位構(gòu)成,供后面的加密迭代使用。對(duì)64位數(shù)據(jù)塊的處理:把數(shù)據(jù)分成64位的數(shù)據(jù)塊,不夠64位的以適當(dāng)?shù)姆绞?/p>
46、填補(bǔ)。對(duì)數(shù)據(jù)塊作變換得到如圖3-4。</p><p> 圖3-4 初始置換IP 圖3-5 選擇運(yùn)算E</p><p><b> 3.3 加密函數(shù)</b></p><p> 加密函數(shù)是DES的核心部分。它的作用是在第i次加密迭代中用子密鑰對(duì)進(jìn)行加密。在第i次迭代加密中選擇運(yùn)算E對(duì)32位的的各位進(jìn)行選擇
47、和排列,產(chǎn)生一個(gè)48位的結(jié)果。此結(jié)果與子密鑰模2相加,然后送入代替函數(shù)組S。代替函數(shù)組由8個(gè)代替函數(shù)(也稱(chēng)S盒子)組成,每個(gè)S盒子有6位輸入,產(chǎn)生4位的輸出。8個(gè)S盒子的輸出合并,結(jié)果得到一個(gè)32位的數(shù)據(jù)組。此數(shù)據(jù)組再經(jīng)過(guò)置換運(yùn)算P,將其各位打亂重排。置換運(yùn)算P的輸出便是加密函數(shù)的輸出。</p><p><b> 1.選擇運(yùn)算E</b></p><p> 選擇運(yùn)算
48、E對(duì)32位的數(shù)據(jù)組A的各位進(jìn)行選擇和排列,產(chǎn)生一個(gè)48位的結(jié)果。</p><p> 將變換后的數(shù)據(jù)塊等分成前后兩部分,前32位記為L(zhǎng)[0],后32位記為R[0]。用16個(gè)子密鑰對(duì)數(shù)據(jù)加密。選擇運(yùn)算E的矩陣如圖3-5。</p><p><b> 2.代替函數(shù)組S</b></p><p> 在f(Ri,Ki)算法描述圖中,S1,S2...S8
49、為選擇函數(shù),其功能是把6bit數(shù)據(jù)變?yōu)?bit數(shù)據(jù)。</p><p> 下面給出選擇函數(shù)Si (i=1,2......8)的功能表:</p><p><b> 選擇函數(shù)Si</b></p><p><b> S1:</b></p><p> 14,4,13,1,2,15,11,8,3,10,
50、6,12,5,9,0,7,</p><p> 0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,</p><p> 4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,</p><p> 15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,</p><p><
51、;b> S2:</b></p><p> 15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,</p><p> 3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,</p><p> 0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,</p><
52、p> 13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,</p><p><b> S3:</b></p><p> 10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,</p><p> 13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,</p&g
53、t;<p> 13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,</p><p> 1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,</p><p><b> S4:</b></p><p> 7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,
54、</p><p> 13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,</p><p> 10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,</p><p> 3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,</p><p><b> S5:&l
55、t;/b></p><p> 2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,</p><p> 14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,</p><p> 4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,</p><p> 11,8,1
56、2,7,1,14,2,13,6,15,0,9,10,4,5,3,</p><p><b> S6:</b></p><p> 12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,</p><p> 10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,</p><p>
57、 9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,</p><p> 4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,</p><p><b> S7:</b></p><p> 4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,</p>&
58、lt;p> 13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,</p><p> 1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,</p><p> 6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,</p><p><b> S8:</b></
59、p><p> 13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,</p><p> 1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,</p><p> 7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,</p><p> 2,1,14,7,4,10,8,13,
60、15,12,9,0,3,5,6,11,</p><p> 現(xiàn)設(shè)輸入為: D=D1D2D3D4D5D6 </p><p> 令:列=D2D3D4D5 </p><p><b> 行=D1D6 </b></p><p> 然后在S1表中查得對(duì)應(yīng)的數(shù),以4位二進(jìn)制表示,此即為選擇函數(shù)S1的輸出。</p>
61、;<p><b> 3.置換運(yùn)算P</b></p><p> 置換運(yùn)算P把S盒輸出的32位數(shù)據(jù)打亂重排,得到32位的加密函數(shù)輸出。用P置換來(lái)提供擴(kuò)散,把S盒的混淆作用擴(kuò)散開(kāi)來(lái)。正是置換P與S盒的互相配合提高了DES的安全性。置換矩陣P如圖3-5所示。</p><p><b> 3.4 逆初始置換</b></p>
62、<p> 逆初始值換是初始值換IP的逆置換。它把第十六次加密迭代的結(jié)果打亂重排,形成64位密文。至此加密過(guò)程結(jié)束。逆初始值換的置換矩陣如圖3-6所示。</p><p> 圖3-5 置換選擇P 圖3-6 逆初始值換</p><p> 第四章 設(shè)計(jì)結(jié)果及分析</p><p><b> 4.1 設(shè)計(jì)
63、結(jié)果</b></p><p> 1. 按照提示信息輸入,明文是字母時(shí),輸入正確密鑰得到以下結(jié)果:</p><p> 2.輸入明文是漢字時(shí),密鑰正確可得到如下結(jié)果:</p><p> 3.輸入明文中存在數(shù)字時(shí),輸入密碼正確時(shí)結(jié)果如下圖:</p><p> 4.當(dāng)輸入密鑰錯(cuò)誤時(shí)結(jié)果如下圖:</p><p&g
64、t; 4.2 設(shè)計(jì)結(jié)果分析</p><p> 測(cè)試的結(jié)果基本上能夠?qū)崿F(xiàn)DES加密和解密的要求,能用給定的密鑰對(duì)任意給出的明文進(jìn)行加密 ,輸出密文,此處明文可以有字母、數(shù)字、漢字等等各種形式。在對(duì)該密文進(jìn)行解密時(shí),只有當(dāng)輸入的密鑰正確時(shí),才能夠輸出正確的明文。所以該程序?qū)崿F(xiàn)了DES加密和解密的功能。但該程序還有所不足,對(duì)較長(zhǎng)的明文進(jìn)行加密時(shí),密文中后面一部分出現(xiàn)了明文的內(nèi)容,安全性降低。</p>
65、<p><b> 總 結(jié)</b></p><p> 本文研究的課題主要是DES算法的設(shè)計(jì)與實(shí)現(xiàn)。隨著計(jì)算機(jī)和網(wǎng)絡(luò)在各個(gè)領(lǐng)域的廣泛應(yīng)用,社會(huì)對(duì)計(jì)算機(jī)和網(wǎng)絡(luò)的依賴(lài)越來(lái)越大,確保計(jì)算機(jī)和網(wǎng)絡(luò)系統(tǒng)的安全已成為世人關(guān)注的社會(huì)問(wèn)題和信息科學(xué)技術(shù)領(lǐng)域的熱點(diǎn)研究課題,信息安全從而變得至關(guān)重要,密碼學(xué)亦是現(xiàn)在的熱門(mén)課題。DES算法是現(xiàn)代密碼學(xué)中的一個(gè)重要算法,本次課程設(shè)計(jì)重點(diǎn)就是掌握DES的
66、算法,設(shè)計(jì)DES算法并用VC++6.0實(shí)現(xiàn)。</p><p> DES是一種分組密碼,是面向二進(jìn)制的密碼算法,因而能夠加解密任何形式的計(jì)算機(jī)數(shù)據(jù)。本設(shè)計(jì)主要是根據(jù)DES的四個(gè)部分組成來(lái)設(shè)計(jì),子密鑰的產(chǎn)生、初始置換IP、加密函數(shù)還有逆初始值換。該設(shè)計(jì)方案就是根據(jù)這四個(gè)部分設(shè)計(jì)出來(lái)!加密算法要達(dá)到的主要目的是提供高質(zhì)量的數(shù)據(jù)保護(hù),防止數(shù)據(jù)未經(jīng)授權(quán)的泄漏和未被察覺(jué)的修改;DES算法具有極高安全性,到目前為止,除了用窮
67、舉搜索法對(duì)DES算法進(jìn)行攻擊外,還沒(méi)有發(fā)現(xiàn)更有效的辦法。而56位長(zhǎng)的密鑰的窮舉空間為256,這意味著如果一臺(tái)計(jì)算機(jī)的速度是每一秒種檢測(cè)一百萬(wàn)個(gè)密鑰,則它搜索完全部密鑰就需要將近2285年的時(shí)間,可見(jiàn),這是難以實(shí)現(xiàn)的。</p><p> 本次設(shè)計(jì)重點(diǎn)要理解DES算法原理,清楚其細(xì)節(jié)算法。設(shè)計(jì)思路要清晰,能用給定的密鑰對(duì)任意給出的明文進(jìn)行加密,并且能正確的密鑰對(duì)密文進(jìn)行解密。這個(gè)程序中的基本能實(shí)現(xiàn)對(duì)一段明文的加密,
68、然后對(duì)該密文在正確的密鑰的情況下進(jìn)行解密輸出正確的明文,但是此程序?qū)γ魑募用艿陌踩禂?shù)不是很高,比如說(shuō)密文中有時(shí)會(huì)出現(xiàn)較多明文信息,還有待改進(jìn)。</p><p><b> 致 謝</b></p><p> 經(jīng)過(guò)兩個(gè)星期的查找、編寫(xiě)和整理,課程設(shè)計(jì)論文終于快完成了。</p><p> 論文的完成,要感謝的人很多。首先要感謝xx老師,因?yàn)?/p>
69、論文是在xx老師的悉心指導(dǎo)下完成的。xx老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,嚴(yán)肅負(fù)責(zé)的工作態(tài)度對(duì)我影響深遠(yuǎn)。從選題到設(shè)計(jì)的過(guò)程中xx老師給了我們莫大的幫助。在此,我向xx老師表示崇高的敬意和衷心的感謝!同時(shí)也對(duì)金老師對(duì)我們?cè)谒枷肷系闹笇?dǎo)予以衷心的感謝!</p><p> 同時(shí),論文的順利完成,離不開(kāi)老師、同學(xué)的幫助.在整個(gè)論文和設(shè)計(jì)的過(guò)程中,他們幫助我查找資料以及提供論文寫(xiě)作的建議和意見(jiàn),在他們的幫助下,論文得以不斷的完善,感
70、謝所有給過(guò)我?guī)椭睦蠋熀屯瑢W(xué),謝謝你們!</p><p> 通過(guò)這次論文,我學(xué)到了很多知識(shí),開(kāi)拓了我的視野,也學(xué)到一件事情所應(yīng)該有的謹(jǐn)慎和認(rèn)真的態(tài)度,也體會(huì)到了與人合作的快樂(lè),這樣做事的效率非常的高!</p><p> 總之,在這次論文的寫(xiě)作中,我收獲很多!再次感謝所有幫助鼓勵(lì)過(guò)我的老師、同學(xué)和朋友,謝謝你們!</p><p><b> 參考文獻(xiàn)&l
71、t;/b></p><p> 1.張煥國(guó) 王張宜編著,《密碼學(xué)引論》 武漢大學(xué)出版社 </p><p> 2.于工 牛秋娜等編著,范九倫主審,《現(xiàn)代密碼學(xué)原理與實(shí)踐》 西安電子科技大學(xué)出版社</p><p> 3.Michael Welschenbach編著,趙振江,連國(guó)卿等譯,《編碼密碼學(xué)——加密方法的C與C++實(shí)現(xiàn)》,電子工業(yè)出版社</p&g
72、t;<p> 4.楊波. 《現(xiàn)代密碼學(xué)》 北京:清華大學(xué)出版社,2007年</p><p> 5.王育民. 《通信網(wǎng)的安全—理論與技術(shù)》. 西安:西安電子科技大學(xué)出版社,1999年</p><p> 6.馮登國(guó). 《密碼學(xué)導(dǎo)引》 .北京:科學(xué)出版社,1999年</p><p><b> 附錄</b></p>
73、<p><b> 程序設(shè)計(jì)代碼</b></p><p> #include <iostream></p><p> #include <memory.h></p><p> #include <string></p><p> #include <conio.
74、h></p><p> using namespace std;</p><p> enum{ENCRYPT,DECRYPT};// ENCRYPT:加密,DECRYPT:解密</p><p><b> // 設(shè)置密鑰</b></p><p> static void F_func(bool In[32]
75、, const bool Ki[48]);// f 函數(shù)</p><p> static void S_func(bool Out[32], const bool In[48]);// S 盒代替</p><p><b> // 變換</b></p><p> static void Transform(bool *Out, bool *
76、In, const char *Table, int len);</p><p> static void Xor(bool *InA, const bool *InB, int len);// 異或</p><p> static void RotateL(bool *In, int len, int loop);// 循環(huán)左移</p><p> // 字節(jié)
77、組轉(zhuǎn)換成位組</p><p> static void ByteToBit(bool *Out, const char *In, int bits);</p><p> // 位組轉(zhuǎn)換成字節(jié)組</p><p> static void BitToByte(char *Out, const bool *In, int bits);</p><
78、p><b> //左移位數(shù)表 </b></p><p> const static char LOOP_Table[16] = {</p><p> 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1</p><p><b> };</b></p><p><b>
79、; //置換選擇1</b></p><p> const static char PC1_Table[56] = {</p><p> 57,49,41,33,25,17,9,1,58,50,42,34,26,18,</p><p> 10,2,59,51,43,35,27,19,11,3,60,52,44,36,</p><
80、p> 63,55,47,39,31,23,15,7,62,54,46,38,30,22,</p><p> 14,6,61,53,45,37,29,21,13,5,28,20,12,4</p><p><b> };</b></p><p><b> //置換選擇2</b></p><p&
81、gt; const static char PC2_Table[48] = {</p><p> 14,17,11,24,1,5,3,28,15,6,21,10,</p><p> 23,19,12,4,26,8,16,7,27,20,13,2,</p><p> 41,52,31,37,47,55,30,40,51,45,33,48,</p>
82、<p> 44,49,39,56,34,53,46,42,50,36,29,32</p><p><b> };</b></p><p><b> //初始置換IP表</b></p><p> const static char IP_Table[64] = {</p><p>
83、 58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,</p><p> 62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,</p><p> 57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,</p><p> 61,53,45,37,
84、29,21,13,5,63,55,47,39,31,23,15,7</p><p><b> };</b></p><p><b> //選擇運(yùn)算E</b></p><p> static const char E_Table[48] = {</p><p> 32,1,2,3,4,5,4,
85、5,6,7,8,9,</p><p> 8,9,10,11,12,13,12,13,14,15,16,17,</p><p> 16,17,18,19,20,21,20,21,22,23,24,25,</p><p> 24,25,26,27,28,29,28,29,30,31,32,1</p><p><b> };<
86、;/b></p><p><b> // S盒</b></p><p> const static char S_Box[8][4][16] = {</p><p><b> // S1 </b></p><p> 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0
87、,7,</p><p> 0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,</p><p> 4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,</p><p> 15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,</p><p><b> //
88、S2</b></p><p> 15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,</p><p> 3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,</p><p> 0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,</p><p> 13
89、,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,</p><p><b> //S3</b></p><p> 10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,</p><p> 13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,</p><
90、p> 13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,</p><p> 1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,</p><p><b> //S4</b></p><p> 7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,</p&
91、gt;<p> 13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,</p><p> 10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,</p><p> 3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,</p><p><b> //S5</b&g
92、t;</p><p> 2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,</p><p> 14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,</p><p> 4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,</p><p> 11,8,12,7,1,
93、14,2,13,6,15,0,9,10,4,5,3,</p><p><b> //S6</b></p><p> 12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,</p><p> 10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,</p><p> 9,1
94、4,15,5,2,8,12,3,7,0,4,10,1,13,11,6,</p><p> 4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,</p><p><b> //S7</b></p><p> 4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,</p><p
95、> 13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,</p><p> 1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,</p><p> 6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,</p><p><b> //S8</b></p&g
96、t;<p> 13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,</p><p> 1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,</p><p> 7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,</p><p> 2,1,14,7,4,10,8,13,15,
97、12,9,0,3,5,6,11</p><p><b> };</b></p><p><b> //P換位表</b></p><p> const static char P_Table[32] = {</p><p> 16,7,20,21,29,12,28,17,1,15,23,26,
98、5,18,31,10,</p><p> 2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25</p><p><b> };</b></p><p> //逆初始置換IP-1表</p><p> const static char IPR_Table[64] = {</p&g
99、t;<p> 40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,</p><p> 38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,</p><p> 36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,</p><p>
100、 34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25</p><p><b> };</b></p><p> static bool SubKey[16][48];// 16圈子密鑰</p><p> void Des_Run(char Out[8], char In[8], bool Type)
101、</p><p><b> {</b></p><p> static bool M[64], Tmp[32], *Li = &M[0], *Ri = &M[32];</p><p> ByteToBit(M, In, 64);</p><p> Transform(M, M, IP_Table,
102、 64);</p><p> if( Type == ENCRYPT ){</p><p> for(int i=0; i<16; i++) {</p><p> memcpy(Tmp, Ri, 32);</p><p> F_func(Ri, SubKey[i]);</p><p> Xor(Ri,
103、Li, 32);</p><p> memcpy(Li, Tmp, 32);</p><p><b> }</b></p><p><b> }else{</b></p><p> for(int i=15; i>=0; i--) {</p><p> mem
104、cpy(Tmp, Li, 32);</p><p> F_func(Li, SubKey[i]);</p><p> Xor(Li, Ri, 32);</p><p> memcpy(Ri, Tmp, 32);</p><p><b> }</b></p><p><b> }
105、</b></p><p> Transform(M, M, IPR_Table, 64);</p><p> BitToByte(Out, M, 64);</p><p><b> }</b></p><p> void Des_SetKey(const char Key[8])</p>
106、<p><b> {</b></p><p> static bool K[64], *KL = &K[0], *KR = &K[28];</p><p> ByteToBit(K, Key, 64);</p><p> Transform(K, K, PC1_Table, 56);</p>&
107、lt;p> for(int i=0; i<16; i++) {</p><p> RotateL(KL, 28, LOOP_Table[i]);</p><p> RotateL(KR, 28, LOOP_Table[i]);</p><p> Transform(SubKey[i], K, PC2_Table, 48);</p>
108、<p><b> }</b></p><p><b> }</b></p><p> void F_func(bool In[32], const bool Ki[48])</p><p><b> {</b></p><p> static bool MR
109、[48];</p><p> Transform(MR, In, E_Table, 48);</p><p> Xor(MR, Ki, 48);</p><p> S_func(In, MR);</p><p> Transform(In, In, P_Table, 32);</p><p><b>
110、 }</b></p><p> void S_func(bool Out[32], const bool In[48])</p><p><b> {</b></p><p> for(char i=0,j,k; i<8; i++,In+=6,Out+=4) {</p><p> j = (I
111、n[0]<<1) + In[5];</p><p> k = (In[1]<<3) + (In[2]<<2) + (In[3]<<1) + In[4];</p><p> ByteToBit(Out, &S_Box[i][j][k], 4);</p><p><b> }</b>&l
112、t;/p><p><b> }</b></p><p> void Transform(bool *Out, bool *In, const char *Table, int len)</p><p><b> {</b></p><p> static bool Tmp[256];</p
113、><p> for(int i=0; i<len; i++)</p><p> Tmp[i] = In[ Table[i]-1 ];</p><p> memcpy(Out, Tmp, len);</p><p><b> }</b></p><p> void Xor(bool *I
114、nA, const bool *InB, int len)</p><p><b> {</b></p><p> for(int i=0; i<len; i++)</p><p> InA[i] ^= InB[i];</p><p><b> }</b></p><
115、;p> void RotateL(bool *In, int len, int loop)</p><p><b> {</b></p><p> static bool Tmp[256];</p><p> memcpy(Tmp, In, loop);</p><p> memcpy(In, In+lo
116、op, len-loop);</p><p> memcpy(In+len-loop, Tmp, loop);</p><p><b> }</b></p><p> void ByteToBit(bool *Out, const char *In, int bits)</p><p><b> {&l
117、t;/b></p><p> for(int i=0; i<bits; i++)</p><p> Out[i] = (In[i/8]>>(i%8)) & 1;</p><p><b> }</b></p><p> void BitToByte(char *Out, const
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)-----文件加密與解密算法研究設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-----文件加密與解密算法研究設(shè)計(jì)
- vc實(shí)現(xiàn)文件簡(jiǎn)單的加密和解密畢業(yè)設(shè)計(jì)論文.doc
- 加密解密
- [優(yōu)秀畢業(yè)設(shè)計(jì)精品] access加密文件的解密工具的開(kāi)發(fā)研究
- 語(yǔ)音加密解密算法研究-仿真和實(shí)現(xiàn)-畢業(yè)論文
- 加密解密文件
- 實(shí)現(xiàn)文件簡(jiǎn)單的加密和解密畢業(yè)設(shè)計(jì)任務(wù)書(shū).doc
- 加密與解密課程設(shè)計(jì)
- 畢業(yè)論文—基于matlab的光學(xué)圖像加密解密技術(shù)
- 畢業(yè)論文--分組密碼算法des的加密和解密的實(shí)現(xiàn)
- java課程設(shè)計(jì)--加密與解密
- rsa加密解密算法
- java課程設(shè)計(jì)---加密和解密
- java文件加密解密課程設(shè)計(jì)
- 加密解密程序設(shè)計(jì)課程設(shè)計(jì)
- java課程設(shè)計(jì) -- 文件加密與解密
- c語(yǔ)言課程設(shè)計(jì)—數(shù)據(jù)加密解密
- c語(yǔ)言課程設(shè)計(jì)-文件加密解密
- c語(yǔ)言課程設(shè)計(jì)-文件加密解密
評(píng)論
0/150
提交評(píng)論