文件加密及解密小型軟件設計與實現(xiàn)畢業(yè)設計_第1頁
文件加密及解密小型軟件設計與實現(xiàn)畢業(yè)設計_第2頁
文件加密及解密小型軟件設計與實現(xiàn)畢業(yè)設計_第3頁
文件加密及解密小型軟件設計與實現(xiàn)畢業(yè)設計_第4頁
文件加密及解密小型軟件設計與實現(xiàn)畢業(yè)設計_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、新疆大學畢業(yè)論文題 目: 文件加密及解密小型軟件設計與實現(xiàn)摘 要隨著信息社會的到來,人們在享受信息資源所帶來的巨大的利益的同時,也面臨著信息安全的嚴峻考驗。信息安全已經(jīng)成為世界性的現(xiàn)實問題,信息安全問題已威脅到國家的政治、經(jīng)濟、軍事、文化、意識形態(tài)等領域,同時,信息安全問題也是人們能否護自己的個人隱私的關鍵。信息安全是社會穩(wěn)定安全的必要前提條件。信息安全是一個綜合性的交叉學科領域,廣泛涉及數(shù)學、密碼學、計算機、通信、控制、人工智能、安全工程、人文科學等諸多學科,是近幾年迅速發(fā)展的一個熱點學科領域。信息對抗和網(wǎng)絡安全是信息安全的核心熱點,它的研究和發(fā)展又將刺激、推動和促進相關學科的研究與發(fā)展。至

2、今,密碼技術是取得信息安全性最有效的一種方法,密碼技術是信息安全的核心技術。本文是一篇討論關于常用文件加密解密算法的畢業(yè)設計論文,它詳細的講述了文件加密解密算法實現(xiàn)的過程中所用到的方法、技術。對公鑰密碼體制和私鑰密碼體制進行了分析和研究,并對公鑰密碼體制和私鑰密碼體制的代表RSA算法和DES算法進行了研究和比較。關鍵詞:解密;文件加密;密碼體制;DES;RSAAbstractDesign and Implementation of Document tagging softwareAbstract: With the advent of the information society, peo

3、ple in the enjoyment of information resources brought about tremendous benefits, but also faced with a letter Income security, a severe test. Information security has become a worldwide reality, information security has been a threat to the countrys political Governance, economic, military, cultural

4、, ideological and other areas at the same time, the issue of information security is also a possibility of retaining their own personal Privacy key. Information security and social stability is a necessary precondition for security.This article is a discussion paper on encryption and decryption algo

5、rithms commonly used in graduate design thesis, which documents in detail about the encryption and decryption process of algorithm used in the methods and techniques. Of public-key cryptosystem private key cryptosystem and analysis and research, and public-key cryptosystem and on behalf of private k

6、ey cryptography algorithm RSA algorithm and DES have been studied and compared.Keywords: Decryption; file encryption; cryptosystem; DES; RSA目錄 TOC o 1-3 h z u HYPERLINK l _Toc326599555 摘 要 PAGEREF _Toc326599555 h 2 HYPERLINK l _Toc326599556 Abstract PAGEREF _Toc326599556 h 3 HYPERLINK l _Toc32659955

7、7 目錄 PAGEREF _Toc326599557 h 4 HYPERLINK l _Toc326599558 第一章 緒論 PAGEREF _Toc326599558 h 5 HYPERLINK l _Toc326599559 論文背景及意義 PAGEREF _Toc326599559 h 5 HYPERLINK l _Toc326599560 本論文的主要方法和研究進展 PAGEREF _Toc326599560 h 6 HYPERLINK l _Toc326599561 第二章 DES介紹及需求分析 PAGEREF _Toc326599561 h 9 HYPERLINK l _Toc3

8、26599562 需求分析 PAGEREF _Toc326599562 h 9 HYPERLINK l _Toc326599563 常規(guī)密鑰密碼體制 PAGEREF _Toc326599563 h 9 HYPERLINK l _Toc326599564 分組加密解密算法-DES算法簡介 PAGEREF _Toc326599564 h 11 HYPERLINK l _Toc326599565 DES加密流程圖 PAGEREF _Toc326599565 h 13 HYPERLINK l _Toc326599566 DES算法詳述 PAGEREF _Toc326599566 h 14 HYPERL

9、INK l _Toc326599567 第三章 系統(tǒng)設計 PAGEREF _Toc326599567 h 17 HYPERLINK l _Toc326599568 設計基本原理 PAGEREF _Toc326599568 h 17 HYPERLINK l _Toc326599569 界面設計 PAGEREF _Toc326599569 h 17 HYPERLINK l _Toc326599570 3.1.1 加密解密界面設計 PAGEREF _Toc326599570 h 17 HYPERLINK l _Toc326599571 3.1.2 加密密鑰界面設計 PAGEREF _Toc32659

10、9571 h 21 HYPERLINK l _Toc326599572 .2 解密密鑰界面設計 PAGEREF _Toc326599572 h 22 HYPERLINK l _Toc326599573 3.2 實現(xiàn)代碼設計 PAGEREF _Toc326599573 h 23 HYPERLINK l _Toc326599574 3.2.1 DES的加密設計 PAGEREF _Toc326599574 h 23 HYPERLINK l _Toc326599575 3.2.2 DES解密設計 PAGEREF _Toc326599575 h 25 HYPERLINK l _Toc326599576

11、第四章 設計結果及分析 PAGEREF _Toc326599576 h 26 HYPERLINK l _Toc326599577 4.1 設計結果展示 PAGEREF _Toc326599577 h 26 HYPERLINK l _Toc326599578 4.2 設計結果分析及說明 PAGEREF _Toc326599578 h 29 HYPERLINK l _Toc326599579 第五章 總結 PAGEREF _Toc326599579 h 30 HYPERLINK l _Toc326599580 參考文獻 PAGEREF _Toc326599580 h 31 HYPERLINK l

12、_Toc326599581 致謝 PAGEREF _Toc326599581 h 32 緒論 論文背景及意義信息安全是一個綜合性的交叉學科領域,廣泛涉及數(shù)學、密碼學、計算機、通信、控制、人工智能、安全工程、人文科學等諸多學科,是近幾年迅速發(fā)展的一個熱點學科領域。信息對抗和網(wǎng)絡安全是信息安全的核心熱點,它的研究和發(fā)展又將刺激、推動和促進相關學科的研究與發(fā)展。至今,密碼技術是取得信息安全性最有效的一種方法, 密碼技術是信息安全的核心技術。隨著網(wǎng)絡的發(fā)展,網(wǎng)絡安全已成為信息化社會的一個焦點問題,因此需要一種網(wǎng)絡安全機制來解決這些問題。在早期,很多的專業(yè) HYPERLINK :/ 計算機人員就通過對網(wǎng)

13、絡安全構成威脅的主要因素的研究,已經(jīng)開發(fā)了很多種類的產(chǎn)品。但縱觀所有的網(wǎng)絡安全技術,我們不難發(fā)現(xiàn)加密技術在扮演著主打角色。它無處不在,作為其他技術的基礎,它發(fā)揮了重要的作用。本 HYPERLINK :/ 論文講述了加密技術的發(fā)展與實現(xiàn),兩種密鑰體制(常規(guī)密鑰密碼體制和公開密鑰密碼體制),以及密鑰的管理(主要討論密鑰分配)。我們可以在加密技術的特點中看到他的發(fā)展前景,為網(wǎng)絡提供更可靠更安全的運行環(huán)境。 通過數(shù)據(jù)加密,人們可以有效地保證通信線路上的內容不被泄露,而且還可以檢驗傳送信息的完整性。進一步,密碼技術可以應用于數(shù)字簽名、身份認證和信息鑒定,這些應用對于資源存取控制以及其它安全措施是必須而且

14、有效的。信息安全產(chǎn)品從應用類型上可以分為防火墻類產(chǎn)品、防病毒類產(chǎn)品、防攻擊類產(chǎn)品、密碼類產(chǎn)品、認證類產(chǎn)品和訪問控制類產(chǎn)品。相對于防病毒軟件和防火墻軟件來說,基于密碼技術密碼類產(chǎn)品、認證類產(chǎn)品份額相對較小,但隨著金融、電信、政府等行業(yè)信息化建設對于網(wǎng)絡安全整體解決方案需求的增加,將會有較大的增長。在本次畢業(yè)設計中,對公鑰密碼體制和私鑰密碼體制進行了分析和研究,并對公鑰密碼體制和私鑰密碼體制的代表DES算法進行了研究和比較。并且實現(xiàn)了基本的文件加密解密的處理流程,能提供對文件的安全、有效的保護。 本論文的主要方法和研究進展信息是一種資源,也是一種財富。在現(xiàn)代社會中,信息處理和通信技術日益發(fā)展,保護

15、信息的安全,特別是保護重要信息的安全,越來越成受到國內外有關研究人員的極大重視。當前由于信息的保護不利和失誤,世界各國遭受的損失是巨大的?,F(xiàn)在,國際互聯(lián)網(wǎng)上的各站點,幾乎都有各種各樣的安全措施,例如防火墻(Fire Wall)、網(wǎng)絡加密、加密狗等。但是,這些都是系統(tǒng)或網(wǎng)站層次的安全設施。對于廣大用戶來說,更為直接、也更為有效的辦法,就是使用信息加密技術。加密技術是一門實用的技術,有著悠久的歷史。過去,加密技術僅被軍事和謀報人員以及某些大型商業(yè)企業(yè)所采用,應用范圍十分有限。加密學也是一門與數(shù)學有關的深奧的科學,有能力研究加密學的人為數(shù)不多??峙逻@也是它鮮為人知、較少應用的原因。信息安全的內容主要

16、包括五個部分:信息的保密性、信息的完整性、信息的可用性、信息的可控性、信息的不可否認性。密碼技術是保證信息安全的核心。密碼學泛指一切有關研究密碼通信的學問,其中包括下面兩個領域:如何達成秘密通信,以及如何破譯秘密通信。也就是密碼編碼學:指如何達到信息的秘密性,鑒別性的科學;密碼分析學:泛指如何破解密碼系統(tǒng),或偽造信息使密碼系統(tǒng)誤以為真的科學。從密碼學的發(fā)展來看,它經(jīng)歷了傳統(tǒng)(古典)密碼學、近代密碼學、現(xiàn)代密碼學幾個階段,計算機、數(shù)學領域的最新成果往往與密碼學有關或被應用于密碼學研究中。密碼學擁有悠久、豐富多彩的歷史。作為古典密碼其中的一種,早期出現(xiàn)的密寫術形式只需要紙和筆就可以完成。古典密碼學

17、的兩大范疇是將消息內容進行重新排列的位移密碼和系統(tǒng)地將字母進行替換的替換密碼。古典密碼學會透露出與明文統(tǒng)計學結果相關的大量信息,因此容易被破解,如對頻率分析可以有效地攻擊古典密碼。盡管保密強度很低,由于實現(xiàn)難度低,加密解密快,古典密碼至今仍然被廣泛使用。在古典密碼學中,有四種類型的代替密碼:簡單代替密碼,或單字母密碼:就是明文的一個字符用相應的一個密文字符代替。Caesar 密碼就是典型的簡單替代密碼。多編碼代替密碼:它與簡單代替密碼系統(tǒng)相似,唯一的不同是單個字符明文可以映射成密文的幾個字符之一,例如 A 可能對應于5、13、25 或 56,“B”可能對應于 7、19、31 或 42,等等。字

18、母代替密碼:字符塊被成組加密,例如“ABA”可能對應于“RTQ”,ABB 可能對應于“SLL”等。多表代替密碼:由多個簡單的代替密碼構成,例如,可能有 5 個被使用的不同的簡單代替密碼,單獨的一個字符用來改變明文的每個字符的位置。20 世紀初,包括轉輪機在內的一些機械密碼加密裝置被發(fā)明出來,其中最有名的是二次世界大戰(zhàn)中德國使用的恩尼格碼(Enigma)機。由這些裝置實現(xiàn)的密碼顯著提高了密碼分析的復雜程度,大量的攻擊也僅僅取得了有限的結果。古典密碼學以移位密碼、替換密碼、轉輪機為代表,以替代和置換為基礎的密碼系統(tǒng)在今天看來已經(jīng)不堪一擊,無法保證信息的安全,對處心積慮的攻擊者來說形同虛設,因為已經(jīng)

19、有成熟的分析方法來破解這一類的加密方法。借助電子計算機的發(fā)展,人們可以實現(xiàn)更復雜的密碼系統(tǒng)。與古典密碼和機械密碼對 26 個字母進行操作不同,計算機密碼的一個顯著特征是對二進制串進行操作。計算機密碼對密碼分析有更強的抵抗力,只有少數(shù)情況下唯密文攻擊才會生效。密碼學的大發(fā)展時期是上世紀 70 年代,以 DES 和 RSA 算法的提出為代表。一系列的突破創(chuàng)立了新的密碼學體系。近代密碼學的另一個分支是序列密碼,這種密碼體制采用與明文長度相同的密鑰,利用模加(異或)的方法來掩蓋明文的內容。這種加密方法雖然簡單,但在使用一次性密鑰的情況下,可獲得極高的安全性,由于密鑰不重復使用,給破譯帶來了極大的困難。

20、但這種方法也有其缺點,由于密鑰只使用一次,不適合對大量數(shù)據(jù)進行加密,尤其是流媒體數(shù)據(jù),而且大量密鑰的分發(fā)、傳送也是一個問題。這種方法安全性的關鍵是要保證密鑰序列的隨機性,然而“真”隨機數(shù)是不容易通過固定算法來產(chǎn)生的,而使用“偽隨機數(shù)”則存在著一定的風險。近年來提出的“量子密碼”采用了量子狀態(tài)來傳遞信息。“海森堡測不準原理”是量子力學的基本原理,它表明,在同一時刻以相同的精度測定量子的位置與動量是不可能的,只能精確測定兩者之一。“單量子不可復制定理”是“海森堡測不準原理”的推論,它表明,在不知道量子狀態(tài)的情況下復制單個量子是不可能的,因為要復制單個量子就只能先作測量,而測量必然改變量子的狀態(tài),所

21、以說不可能。這樣使用量子狀態(tài)作為“一次性便簽”可以達到無條件保密。因為如果量子在傳輸中被測量,其狀態(tài)就會改變,從而在傳輸中監(jiān)聽者會因此而暴露。雖然量子密碼擁有優(yōu)秀的安全特性,但目前仍處于研究階段。密碼原理。所謂加密,就是將正常情況下可懂的文件數(shù)據(jù)輸入密碼機,由密碼機變成不可懂的亂碼,即將“明文”變成“密文”;所謂解密,就是上述過程的逆過程,即將“密文” 變成“明文”。密碼機可看做是一個用電子元件實現(xiàn)一種復雜數(shù)學運算的機器。復雜數(shù)學運算可記為,這里C=密文,p=明文,k=密鑰,f是密碼算法。K是自變量,C是因變量。不同的K有不同的C,對于某個密碼算法f,K的選擇范圍越大,C的變化就越多,這個密碼

22、算法被人破譯的難度就越大,保密強度就越高。如何評價K的選擇范圍大小呢?一般是看K的位數(shù),位數(shù)長的(如128位以上)選擇范圍大,位數(shù)短的(如56位)選擇范圍小。一個國家的密碼政策,通常是用位數(shù)長的高強度密碼(位數(shù)可達)保護國家秘密,其它用于保護商業(yè)秘密。 在數(shù)據(jù)傳輸加密過程中,收發(fā)雙方線路密碼機使用的是相同的密碼算法,注入了相同的密鑰,發(fā)方向收方發(fā)出明文,經(jīng)密碼機變成密文后送上公網(wǎng)通信線路,到達收方后先經(jīng)密碼機解密再送到收方電腦上。密文在公用通信網(wǎng)上傳輸時,如果被截收,竊密方收到的是不可懂的亂碼,無法竊取信息內容。 在文件存儲加密中,加密解密卡加解密采用同一種算法和同一個密鑰,工作人員用電腦處理

23、文件后先將文件加密再存入磁盤,以防竊密者盜用磁盤竊取文件。工作人員調用該文件時,文件先經(jīng)解密再從顯示器上顯示出來以供使用。 DES介紹及需求分析 需求分析數(shù)據(jù)加密標準曾被美國國家標準局(NBS,現(xiàn)為國家標準與技術研究所NIST)確定為聯(lián)邦信息處理標準(FIPS PUB 46),使用廣泛,特別是在金融領域,曾是對稱密碼體制事實上的世界標準。目前在國內,隨著三金工程尤其是金卡工程的啟動,DES算法在POS、ATM、智能卡(IC卡)、加油站、高速公路收費站等領域被廣泛應用,以此來實現(xiàn)關鍵數(shù)據(jù)的保密,如信用卡持卡人的PIN的加密傳輸、IC卡與POS間的雙向認證、金融交易數(shù)據(jù)包的MAC校驗等,均用到DE

24、S算法。因此,對于目前的電子交易市場以及一些商業(yè)領域,DES依舊存在著廣大的需求。這次課程設計所完成的DES算法,主要是要實現(xiàn)對輸入的一組數(shù)據(jù),進行DES加密,加密模式分為ECB、CBC、CFB、OFB四種。函數(shù)接口是用戶自定義的,我們將完成它的內部構造,并封裝成dll,以供用戶程序調用。該算法所要完成的工作主要是,用戶輸入密鑰以及明文,然后選擇需要加密的方式。程序應該實現(xiàn)能判斷用戶輸入的密鑰長度是否正確以及輸入的數(shù)據(jù)是否為空,在做出如上判斷之后,還要對數(shù)據(jù)進行填充,填充的方式為:明文不足整塊填充格式為L(1子節(jié)長度)+L個連續(xù)的0 x80。比如剛好整塊數(shù)據(jù),最后填充7個0 x80,填充的數(shù)據(jù)

25、為:0 x07 0 x80 0 x80 0 x80 0 x80 0 x80 0 x80 0 x80。再比如最后一塊為7字節(jié),那么填充的數(shù)據(jù)就為:0 x00。在這些準備工作之后,方可對數(shù)據(jù)進行加密。在解密的時候,還要完成將填充的數(shù)據(jù)去掉,恢復以前輸入的明文。 常規(guī)密鑰密碼體制所謂常規(guī)密鑰密碼體制,即加密密鑰與解密密鑰是相同的密碼體制。這種加密系統(tǒng)又稱為對稱密鑰系統(tǒng)。使用對稱加密方法,加密與解密方必須使用相同的一種加密算法和相同的密鑰。圖2-1加密解密過程示意圖因為通信的雙方在加密和解密時使用的是同一個密鑰,所以如果其他人獲取到這個密鑰,那么就會造成失密。只要通信雙方能確保密鑰在交換階段未泄露,那

26、么就可以保證信息的機密性與完整性。對稱加密技術存在著通信雙方之間確保密鑰安全交換的問題。同時,一個用戶要N個其他用戶進行加密通信時,每個用戶對應一把密鑰,那么他就要管理N把密鑰。當網(wǎng)絡N個用戶之間進行加密通信時,則需要有N(N-1)個密鑰,才能保證任意兩者之間的通信。所以,要確保對稱加密體系的安全,就好要管理好密鑰的產(chǎn)生,分配,存儲,和更換。常規(guī)密碼體制早期有替代密碼和置換密碼這二種方式。下面我們將講述一個著名的分組密碼美國的數(shù)據(jù)加密標準DES。DES是一種對二元數(shù)據(jù)進行加密的算法,數(shù)據(jù)分組長度為64位,密文分組長度也是64位,使用的密鑰為64位,有效密鑰長度為56位,有8位用于奇偶校驗,解密

27、時的過程和加密時相似,但密鑰的順序正好相反。DES算法的弱點是不能提供足夠的安全性,因為其密鑰容量只有56位。由于這個原因,后來又提出了三重DES或3DES系統(tǒng),使用3個不同的密鑰對數(shù)據(jù)塊進行(兩次或)三次加密,該方法比進行普通加密的三次塊。其強度大約和112比特的密鑰強度相當。 密碼體制。收發(fā)雙方密碼機的密碼算法一致、密鑰一致,這在密碼體制中叫“秘密密鑰體制”或“單密鑰體制”,這是一種傳統(tǒng)的密碼體制,有系統(tǒng)的理論研究和完善的管理機制,技術成熟,性能穩(wěn)定,國內自行研制的產(chǎn)品安全可靠、保密強度高,一般用于文件數(shù)據(jù)加密存儲和傳輸。國外著名的DES密碼就是美國政府1977年發(fā)布的密鑰長度為56位的“

28、秘密密鑰體制”的密碼。這種密碼的缺陷是:僅適用于內部的,點對點方式的,事前雙方已知密鑰的兩點之間的加密傳輸,保守密鑰的秘密十分重要,密鑰一旦丟失,整個系統(tǒng)都要立即更換密鑰,否則竊密者將可能輕而易舉的破解密文。隨著近代計算機網(wǎng)絡的發(fā)展,不同部門、不同單位網(wǎng)上交往增多,“單密鑰體制”顯出了它的局限性,人們很難對眾多的部門和單位保管好各自不同的密鑰。于是人們又發(fā)明了“公開密鑰體制”或叫“雙密鑰體制”。它是基于一些數(shù)學問題而發(fā)明出來的密碼體制,這些數(shù)學問題可記為,其中,寫在一起就是,這個公式說明有這樣一種數(shù)學運算,它可以將用密鑰k加密的密文用密鑰k解密,國外1978年公布的RSA密碼就是這種有兩個密鑰

29、的密碼。這種密碼保密強度不如單密鑰體制的密碼,一般用于通信雙方的身份確認和數(shù)字簽名。 在實用的互聯(lián)網(wǎng)絡中,各用戶通過加密傳輸可形成一個虛擬的保密互聯(lián)網(wǎng)。該網(wǎng)要由一個各用戶認可的密鑰管理中心來生成、管理、分發(fā)和銷毀密鑰,同時各用戶可將自己的“公鑰”也存放在密鑰管理中心。各用戶需進行保密通信時,先通過公鑰系統(tǒng)進行身份確認(這個過程中密鑰管理中心可起到仲裁鑒別作用),雙方確認身份后由密鑰管理中心分發(fā)秘密密鑰,雙方用得到秘密密鑰進行數(shù)據(jù)或文件的加密傳輸。這種工作方式不但適用于黨政機關內部,也同樣適用于電子商務,但電子商務和黨政機關不能使用同一個級別的密碼設備,黨政機關用的是“普密”設備,電子商務只能用

30、“商密”設備,二者的保密強度是不一樣的。 分組加密解密算法-DES算法簡介DES(Data Encryption Standard)起源于1973年美國國家標準局(NBS)征求國家密碼標準方案。IBM就提交了其在20世紀60年代末設立的一個計算機密碼編碼學方面的研究項目的結果,這個項目在1971年底研制出了一種稱為Lucifer的算法。它是當時提出的最好的算法,因而在1977年被選為數(shù)據(jù)加密標準,有效期為5年,隨后在1983年、1987年、1993年三次再度授權該算法續(xù)用5年。DES滿足了美國國家標準局欲達到的4個目的:提供高質量的數(shù)據(jù)保護即防止數(shù)據(jù)未經(jīng)授權的泄露和未被察覺的修改具有相當高的復

31、雜性使得破譯的開銷超過可能獲得的利益便于理解和掌握DES算法把64位的明文輸入塊變?yōu)?4位的密文輸出塊,它所使用的密鑰也是64位。首先,DES把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L0、R0左右兩部分,每部分各長32位,并進行前后置換(輸入的第58位換到第一位,第50位換到第2位,依此類推,最后一位是原來的第7位),最終由L0輸出左32位,R0輸出右32位,根據(jù)這個法則經(jīng)過16次迭代運算后,得到L16、R16,將此作為輸入,進行與初始置換相反的逆置換,即得到密文輸出。DES算法的入口參數(shù)有三個:Key、Data、Mode。其中Key為8個字節(jié)共64位,是DES算法的工作密鑰;Data也

32、為8個字節(jié)64位,是要被加密或被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密或解密,如果Mode為加密,則用Key去把數(shù)據(jù)Data進行加密,生成Data的密碼形式作為DES的輸出結果;如Mode為解密,則用Key去把密碼形式的數(shù)據(jù)Data解密,還原為Data的明碼形式作為DES的輸出結果。在使用DES時,雙方預先約定使用的“密碼”即Key,然后用Key去加密數(shù)據(jù);接收方得到密文后使用同樣的Key解密得到原數(shù)據(jù),這樣便實現(xiàn)了安全性較高的數(shù)據(jù)傳輸。 DES加密流程圖DES加密流程圖:圖2-2 DES加密流程圖DES算法詳述DES算法把64位的明文輸入塊變?yōu)?4位的密文輸出塊,它所使用的密鑰

33、也是64位,其功能是把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L0 、R0兩部分,每部分各長32位,其置換規(guī)則見下表: 58,50,12,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17, 9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,即將輸入的第58位換到第一位,第50位換到第2位,依此類推,最后一位是原來的第7位。 L0、R0則是換位輸出

34、后的兩部分,L0是輸出的左32位,R0 是右32位,例:設置換前的輸入值為D1D2D3D64,則經(jīng)過初始置換后的結果為:L0=D550D8;R0=D57D49.D7。經(jīng)過26次迭代運算后,得到L16、R16,將此作為輸入,進行逆置換,即得到密文輸出。逆置換正好是初始置的逆運算,例如,第1位經(jīng)過初始置換后,處于第40位,而通過逆置換,又將第40位換回到第1位,其逆置換規(guī)則如下表所示:40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31, 38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29, 36,4,44,12,52,

35、20,60,28,35,3,43,11,51,19,59,27, 34,2,42,10,50,18,58 26,33,1,41, 9,49,17,57,25, 放大換位表 32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10,11, 12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21, 22,23,24,25,24,25,26,27,28,29,28,29,30,31,32, 1, 單純換位表 16,7,20,21,29,12,28,17, 1,15,23,26, 5,18,31,10, 2,8,24,14,32

36、,27, 3, 9,19,13,30, 6,22,11, 4,25, 在f(Ri,Ki)算法描述圖中,S1,S2.S8為選擇函數(shù),其功能是把6bit數(shù)據(jù)變?yōu)?bit數(shù)據(jù)。下面給出選擇函數(shù)Si(i=1,28)的功能表: 選擇函數(shù)Si S1: 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7, 0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8, 4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0, 15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13, S2: 15,1,8,14,6,11,3,4,9

37、,7,2,13,12,0,5,10, 3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5, 0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15, 13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9, S3: 10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8, 13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1, 13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7, 1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12, S4:

38、7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15, 13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9, 10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4, 3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14, S5:2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9, 14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6, 4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14, 11,8,12,7,1,14,2,13,6,15

39、,0,9,10,4,5,3, S6: 12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11, 10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8, 9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6, 4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13, S7: 4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1, 13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6, 1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2, 6,11

40、,13,8,1,4,10,7,9,5,0,15,14,2,3,12, S8: 13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7, 1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2, 7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8, 2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11, 系統(tǒng)設計 設計基本原理此次課程設計采用的開發(fā)工具是Visual Studio 2005,所選用的開發(fā)語言是C+。這種開發(fā)工具和開發(fā)語言都是當今比較流行的。Visual Studio 2005是微軟推出的應用于

41、2.0開發(fā)的首選工具,其功能強大而且方便易用,同時它也是一套完整的開發(fā)工具,用于生成 ASP Web 應用程序、XML Web services、桌面應用程序和移動應用程序。Visual Basic 、Visual C+ 、Visual C+ 和 Visual J# 全都使用相同的集成開發(fā)環(huán)境 (IDE),該環(huán)境允許它們共享工具并有助于創(chuàng)建混合語言解決方案。另外,這些語言利用了 Framework 的功能,此框架提供對簡化 ASP Web 應用程序和 XML Web services 開發(fā)的關鍵技術的訪問。 C+是 平臺上最重要的語言之一。C+語言源于C和C+,是微軟專門為 設計的語言。C+和

42、 Framework同時出現(xiàn)和發(fā)展。由于C+出現(xiàn)較晚,吸取了許多其他語言的優(yōu)點,解決了許多問題。 簡單的看來,C+僅僅是 開發(fā)的一種語言。但事實上C+是 開發(fā)中最好的一門語言,這是由C+自身的設計決定的。作為專門為 設計的語言,C+不但結合了C+強大靈活和Java語言簡潔的特性,還吸取了Delphi和Visual Basic所具有的易用性。因而C+是一種使用簡單,功能強大,表達力豐富的全新語言。 此次課程設計是調用 中加密方法,進行開發(fā)。首先,運行軟件,首先選擇加密后文件的保存路徑,然后將要加密的文件拖入加密窗口,輸入密碼,確定后進行加密,加密后的文件就保存在指定的路徑上。加密文件分為了兩個部

43、分,前面一部分是文件頭,里面包含了加密標志等一些文件的基本信息;第二部分就是密文,就是加密過的信息。同理,解密時,也要選擇好解密后的文件的保存路徑,然后利用文件頭里的信息,將文件解密并恢復到源文件的樣子。 界面設計 加密解密界面設計運行Microsoft Visual Studio環(huán)境,創(chuàng)建一個項目命名為:WindowsApplication1,在項目里建一個表單Form1,把它作為文件加密解密工具的主界面。主界面窗口有三個標簽:設置、加密、解密,要分別對這三個標簽做詳細的設計,設計時要用到Microsoft Visual Studio里的工具箱里面的工具。每個標簽的設計如下:一、“加密”標簽

44、的設計此標簽包含有4個panel(此處只實現(xiàn)一個)和textBox1,textBox1用于存放傳過來的加密路徑。panel主要實現(xiàn)文件的拖放和文件的加密功能。當一個文件拖到panel中時,會彈出一個要求輸入密碼的對話框。把輸入的密碼傳回到Form1的panel1_dragDrop中,實現(xiàn)拖放功能.此標簽包含有4個panel(此處只實現(xiàn)一個)和textBox1,textBox1用于存放傳過來的加密路徑。panel主要實現(xiàn)文件的拖放和文件的加密功能。當一個文件拖到panel中時,會彈出一個要求輸入密碼的對話框。把輸入的密碼傳回到Form1的panel1_dragDrop中,實現(xiàn)拖放功能的代碼如下:

45、private void panel1_dragEnter (object sender, DragEventArgs e) If (e.Data.GetDataPresent (DataFormats.FileDrop) e.Effect = DragDropEffects.Copy; Else e.Effect = DragDropEffects.None; public void panel1_dragDrop (object sender, DragEventArgs e)If (e.Data.GetDataPresent (DataFormats.FileDrop) /文件加密代碼實

46、現(xiàn)部分再把panel1的屬性中的AllowDrop屬性值設置為True,這樣panel1的文件拖放就實現(xiàn)了。按照些方法就可以實現(xiàn)其余三個panel的拖放功能。1文件的加密界面主要由四個長方形的框條組成(如圖4-1所示),它們分別運用四種加密算法來實現(xiàn)文件的加密,用戶可以根據(jù)需求來選擇符合自己要求的算法。圖4-1文件加密界面二、“解密”標簽的設計此界面中有一個panel和一個textbox2, textbox2用于存放傳過來的加密路徑,panel用于實現(xiàn)文件的拖放和解密功能,當一個文件拖到panel中時,會彈出一個輸入密碼對話框。把輸入的密碼傳回到Form1的panel5_dragDrop中,實

47、現(xiàn)拖放功能的代碼如下:private void panel5_dragEnter (object sender, DragEventArgs e If (e.Data.GetDataPresent (DataFormats.FileDrop) e.Effect = DragDropEffects.Copy; Else e.Effect = DragDropEffects.None; public void panel5_dragDrop (object sender, DragEventArgs e)If (e.Data.GetDataPresent (DataFormats.FileDrop

48、)/文件解密代碼實現(xiàn)部分2文件的解密界面主要由一個長方形的框條組成(如圖4-2所示),當你需要進行文件的解密時只需將需要解密的文件拖入長方形框條內即可實現(xiàn)解密功能。圖4-2文件解密界面三、“設置”標簽的設計此界面主要有兩個部分組成:加密文件存儲路徑和解密文件存儲路徑,由groupbox1、groupbox2、組成。在groupbox11中有兩個單選按鈕radiobutton1和radiobutton2,分別命名為“與加密文件相同目錄”、 “指定存儲路徑” ,一個文本框textbox3和一個button1,textbox3用于存放指定的加密路徑,button1實現(xiàn)文件的路徑的選擇。在代碼設計部分

49、,要首先讓radiobutton1在程序運行時自動獲得焦點,在radiobutton1獲得焦點時,radiobtuuon2將會失去焦點,同時textbox3和button1的狀態(tài)為不可見狀態(tài)。要實現(xiàn)這些功能就要把radiobutton1和radiobutton2同時放到一個函數(shù)中,設此函數(shù)為aaa,實現(xiàn)代碼如下:private void aaa(object sender, EventArgs e) if (radioButton2.Checked = true) this.button1.Enabled = true; this.textBox3.Enabled = true; else t

50、his.button1.Enabled = false; this.textBox3.Enabled = false; this.textBox1.Text = 與原文件路徑相同; 然后實現(xiàn)button1的功能,button1是彈出存儲路徑設置的瀏覽框,選擇合適的存放路徑后點擊“確定”,就可以把路徑傳給textBox3,代碼實現(xiàn)如下:private void button1_Click (object sender, EventArgs e) FolderBrowserDialog folder = new FolderBrowserDialog (); if (folder.ShowDial

51、og () = DialogResult.OK) this.textBox3.Text = folder.SelectedPath; this.textBox1.Text = this.textBox3.Text; 按照以上的步驟就可以實現(xiàn)選擇指定的加密路徑,但路徑只會傳給textBox3,在button2中添加如下代碼,使textBox3中存放的路徑值傳給textBox1,并將textBox3的值設置為空,具體代碼如下:private void radioButton2_CheckedChanged (object sender, EventArgs e) this.textBox1.Tex

52、t = this.textBox3.Text; this.textBox3.Text = null; 3加密解密文件的路徑設置界面(如圖4-3所示),主要用于選擇加密或解密文件的路徑選擇,確保用戶能得到最便捷最符合需求的存儲路徑。在默認的情況下文件的加密解密被存儲在與原文件相同的路徑下,用戶也可以根據(jù)需求來進行文件加密解密路徑的設置(如圖4-4所示)。 圖4-3加密解密文件路徑設置界面解密部分的實現(xiàn)過程跟加密大致相同,這里不給予詳細說明。 加密密鑰界面設計加密密鑰界面Form2里由兩個標簽:label1、label2,分別命名為輸入密碼、確認密碼;兩個文本框:textBox1、textBox2

53、,用于用戶輸入密碼(密碼以*的形式顯示出來);兩個按鍵:button1、button2(分別為確認、取消)。在Form2開始設一個全局變量mm1,當單擊確定按鈕時對textBox1和textBox2中的內容進行判斷,如果兩個文本框中輸入的值相同,則把textBox2中的值賦給mm1, 提示“加密成功”,并關閉此Form2。如果textBox1與textBox2中的值不同則提示“密碼不同,請重新輸入!”,并把textBox1與textBox2中的值清空,以便用戶重新輸入密碼。代碼實現(xiàn)如下:private void button1_Click (object sender, EventArgs e

54、) if (this.textBox1.Text = this.textBox2.Text) mm1 = textBox1.Text;MessageBox.show(加密成功!); this.Close (); this.DialogResult = DialogResult.OK; else MessageBox.show(密碼不同,請重新輸入!); this.textBox1.Text = null; this.textBox2.Text = null; button2的作用是關閉當前對話框不做任何操作,命令為:this.Close()。這樣加密密鑰窗口窗口就設計好了。 解密密鑰界面設計解

55、密密鑰界面的設計與加密密鑰界面的設計過程都是一樣的,同樣Form3由兩個標簽:label1、label2,分別命名為輸入密碼、確認密碼;兩個文本框:textBox1、textBox2,用于用戶輸入密碼(密碼以*的形式顯示出來);兩個按鍵:button1、button2(分別為確認、取消)。在Form2開始設一個全局變量mm2,當單擊確定按鈕時對textBox1和textBox2中的內容進行判斷,如果兩個文本框中輸入的值相同,則把textBox2中的值賦給mm2,提示“解密成功”,并關閉此Form2。如果textBox1與textBox2中的值不同則提示“密碼不同,請重新輸入!”,并把textB

56、ox1與textBox2中的值清空,以便用戶重新輸入密碼。代碼實現(xiàn)如下:private void button1_Click (object sender, EventArgs e) if (this.textBox1.Text = this.textBox2.Text) mm2 = textBox1.Text; MessageBox.show(解密成功!); this.Close(); this.DialogResult = DialogResult.OK; else MessageBox.show(密碼錯誤,請重新輸入!); this.textBox1.Text = null; this.

57、textBox2.Text = null; button2的作用是關閉當前對話框不做任何操作,命令為:this.Close()。 實現(xiàn)代碼設計 DES的加密設計當拖入一個文件時,自動彈出要求輸入密碼的對話框Form2,要求輸入密碼,然后把在Form2得到的密碼傳到Form1中以便后面加密時用到。獲取加密文件的文件名,對文件名進行修改,同時要能改變加密文件的存放路徑。文件加密首先要對文件進行讀寫,要把一個文件的內容按照指定的方法或字節(jié)(如按1024個字節(jié)讀取)進行讀取,把讀取到的內容存入到數(shù)組里,然后調用文件加密算法對數(shù)組里的內容進行加密后再存入到另一個數(shù)組中,最后把加密好的內容寫到另一個文件中

58、,這樣就完成了一次的文件內容加密,然后運用循環(huán)語句來完成整個文件的讀取、加密、和寫入工作,文件加密流程圖(圖3-1)所示。文件加密完成后要關閉讀寫文件流。這樣就能實現(xiàn)了文件這加密,但加密算法代碼要另外用代碼實現(xiàn)。文件加密部分碼如下:private void panel1_dragDrop(object sender, DragEventArgs e) Form2 f2 = new Form2();/彈出加密密碼對話框 if (f2.ShowDialog() = DialogResult.OK) if (e.Data.GetDataPresent(DataFormats.FileDrop) st

59、ring mm1 = f2.mm1;/將Form2中的密碼賦給mm1 stringfiles=(string)e.Data.GetData(DataFormats.FileDrop);/獲得拖放文件的名字和路徑 string outpath = null;/定義一個存放文件名的變量,初值為空 /判斷textBox1中的內容 if (this.textBox1.Text = 與原文件路徑相同) /對文件名加密 outpath = files0 + .hj; else /對文件路徑進行截取,返回文件名 /對文件指定路徑進行存儲 T文件讀取完成?按字節(jié)讀取文件按字節(jié)寫放按字節(jié)加密文件關閉讀、寫文件流文件加密成功程序結束拖入文件彈出密碼輸入對話框輸入密碼和確認密碼是否單擊“確定”按鈕F取 消TFT密碼是否一致?獲得文件路徑和文件名密碼傳到Form1TFThis.button1.Text=“與原文件路徑相同”保存路徑,修改文件名修改文件名和路徑圖3-1 DES加密文件流程圖 DES解密設計當拖入一個解密文件時,會彈出一個輸入解密密碼的對話框Form3,要求輸入密碼,并把得到的密碼傳到Form1中,以便調用解密算法時會用到此密碼,解密文件時同樣也要獲得拖放文件的路徑和定義數(shù)組,在得到文件名或路徑后要把文件名還原成原來的名字。要注意此時定義的數(shù)組初始化時的值要注意,如果你在加密時讀取文件是按1

溫馨提示

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

評論

0/150

提交評論