2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本科畢業(yè)設計(論文)</p><p><b>  ( 屆)</b></p><p>  論文題目數據加密方法的研究與實現(xiàn)</p><p>  所在學院 </p><p>  專業(yè)班級 信息管理與信息系統(tǒng) </p&g

2、t;<p>  學生姓名 學號 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 日</p><p>  數據加密方法的研究與實現(xiàn)</p><p>  摘要:信息是當今社會

3、的一種非常重要的戰(zhàn)略資源。密碼技術作為保護信息安全最核心技術之一,一直是安全專家們研究的重點。本文對密碼技術的重要性進行了闡述,介紹了當今密碼技術的分類、原理,以及它們未來的發(fā)展。著重對DES加密算法,RSA加密算法和IDEA加密算法進行了描述,并且通過編寫程序實現(xiàn)DES加密算法和RSA加密算法對數據的加密。</p><p>  關鍵詞: 信息;密碼技術;DES;RSA;IDEA;加密;解密</p>

4、<p>  The Research And Implementation of Data Encryption Method </p><p>  Abstract:Information is an very important strategic resources in the society. Cryptographic technology as one of the most techn

5、ology to protect the security of information, has been on the focus of safety experts’ research. This text expounds the importance of the cryptographic technology, introduces the classification, cryptographic technology

6、principle and the future development of them. Focusing on the DES encryption algorithm, RSA encryption algorithm and IDEA encryption algorithm are descri</p><p>  Key words: Information; Cryptographic Techno

7、logy; DES; RSA; IDEA; Encryption; Decryption </p><p><b>  目錄</b></p><p><b>  1 緒論1</b></p><p>  1.1 密碼技術的研究意義1</p><p>  1.2 論文的主要工作2</p

8、><p>  2 密碼技術基本概念3</p><p>  2.1 加密原理3</p><p>  2.2 密碼學的發(fā)展歷史4</p><p>  2.3 密碼技術的國內外發(fā)展狀況4</p><p>  2.4密碼技術的發(fā)展方向5</p><p>  3 加密算法的分析6<

9、/p><p>  3.1 DES加密算法6</p><p>  3.1.1 DES概述6</p><p>  3.1.2 DES加密算法詳解6</p><p>  3.1.3 DES密鑰計算7</p><p>  3.1.4 DES安全性分析8</p><p>  3.2 RS

10、A加密算法9</p><p>  3.2.1 RSA概述9</p><p>  3.2.2 RSA算法描述10</p><p>  3.2.3 RSA安全性分析10</p><p>  3.3 IDEA加密算法11</p><p>  3.3.1 IDEA概述11</p><p

11、>  3.3.2 IDEA算法描述12</p><p>  3.3.3 IDEA安全性分析13</p><p>  4 加密算法的實現(xiàn)14</p><p>  4.1 DES加密算法14</p><p>  4.1.1 界面設計與代碼14</p><p>  4.1.2 運行結果16<

12、;/p><p>  4.2 RSA加密算法16</p><p>  4.2.1界面設計與代碼16</p><p>  4.2.2運行結果21</p><p>  5 總結與展望22</p><p>  5.1 總結22</p><p>  5.2 展望22</p>

13、<p>  致 謝錯誤!未定義書簽。</p><p><b>  參考文獻24</b></p><p><b>  1 緒論</b></p><p>  從第一臺計算機誕生起,經過幾十年的高速發(fā)展,信息技術已經進入到我們的生活的方方面面,不斷改變著我們的生活。我們已經進入了信息化時代。信息化時代是一個

14、信息爆炸的時代,大量的信息依靠傳統(tǒng)的方式難以實現(xiàn)有效的儲存和傳輸,因而以計算機技術和網絡技術為基礎的信息技術的發(fā)展顯得尤為重要。</p><p>  1.1 密碼技術的研究意義</p><p>  在中國,網民的人數已經達到了3億。每天人們都要通過計算機和網絡進行生活、工作、學習、娛樂等活動。這些活動都需要依靠信息在網絡中的傳輸來完成。其中包括了一些十分敏感的個人信息,如銀行卡賬戶信息,

15、公民個人身份信息等。這些信息都是和人民的切身利益緊密相關。如果信息被盜,那將會為人民帶來巨大的損失。</p><p>  近年來,以淘寶,阿里巴巴等為代表的電子商務蓬勃發(fā)展。2008年,中國的電子商務交易總額已經突破了3萬億人民幣大關,達到了GDP總量的10%,年增長率也達到了50%[1]。電子商務已經成為我國經濟發(fā)展的強大的助推力。不僅僅是電子商務,其他計算機和網絡相關的信息產業(yè)在中國也得到了大力的發(fā)展。它們所

16、創(chuàng)造的經濟效益也在逐年快速增長,已經成為中國經濟發(fā)展不可或缺的部分和強大動力。</p><p>  電子政務也是近年來的信息化建設的重點。電子政務是指政府機構運用現(xiàn)代化的網絡通訊技術和計算機技術,把政府管理和服務職能通過簡單、優(yōu)化、整合、重組后到網上實現(xiàn),打破時間、空間以及條塊的制約,為社會公眾以及自身提供一體化的高效、優(yōu)質廉潔的管理和服務[2]。它不僅能提高政府的工作效率和工作透明度,也使人民群眾更好的實行監(jiān)督

17、的權利。因此,電子政務的建設受到了政府的極大的關注和投入。政府部門經常通過網絡進行傳輸一些文件資料。有些文件包含了涉及國家安全的機密資料,一旦泄露,將為我國國家安全和社會安定帶來巨大威脅。我們需要對這些資料進行保護,保證其安全的傳輸和儲存。</p><p>  辦公自動化是現(xiàn)在企業(yè)信息化建設的重要步驟。企業(yè)把信息資源和重要文件都以電子文檔的形式存放在服務器上,以方便各部門、各公司之間的文檔調用,這樣能很大程度上提

18、高工作效率。目前,各大公司都紛紛建設辦公自動化。有許多涉及商業(yè)機密的文件也一同被放在服務器上。這些資料也需要嚴格保護。</p><p>  信息是一種戰(zhàn)略資源,在國防軍事上,信息安全成為了一個重要的安全防衛(wèi)領域。密碼技術作為信息安全防御中的不可替代的技術,在世界各國,尤其是歐美等國受到極大的重視[3]。美國在這方面投入了巨大的資源來建立了一只專門的信息安全部隊確保其再信息領域的安全。</p><

19、;p>  密碼技術作為信息安全技術最重要的部分之一,是一種主動的安全防御策略,為信息存儲和傳輸提供保護。同時,密碼技術是其他安全技術的基礎,比如數字簽名和密鑰管理等。因此,密碼技術受到安全專家的高度關注和重視。現(xiàn)在,各國都在大力開發(fā)和改進密碼技術,用以應對目前日益嚴重的信息安全問題,保障社會的快速發(fā)展,保護國家安全。</p><p>  1.2 論文的主要工作</p><p>  

20、本次設計通過運用文獻分析方法、面向對象程序設計方法來完成預定的目標:(1)加密技術的選擇。(2)加密密鑰長度的選擇。(3)加密功能。(4)解密功能。</p><p>  具體研究方法和技術路線如下:</p><p>  (1)首先要通過文獻對加密技術的原理和算法實現(xiàn)進行系統(tǒng)的學習,尤其是對對稱加密算法中的DES算法和IDEA算法,非對稱加密算法中的RSA算法的深入學習。</p>

21、<p> ?。?)通過對其他類似的加密軟件的功能的觀察研究,進而對本軟件進行分析:第一,功能分析,即對軟件要實現(xiàn)的主要功能進行分析,包括加密算法的選擇,密鑰的生成,加密與解密的實現(xiàn)等。第二,軟件性能分析,即對軟件的跨平臺運行能力,較高的安全性和高加密效率的實現(xiàn)。第三,根據上述分析,對軟件整體的框架進行邏輯設計。第四、評審分析,對整個軟件的設計方案再做一次評審,確定其設計合理,功能完備,具有可操作性。</p>

22、<p>  (3)通過面向對象程序設計語言來完成軟件的實現(xiàn)過程。</p><p>  2 密碼技術基本概念</p><p>  為了更好的研究密碼技術,首先要闡述一下和密碼技術相關的一些基本的概念:</p><p><b>  2.1 加密原理</b></p><p>  數據加密的基本思想是通過一些手段對

23、信息進行處理,使處理后的結果與原文截然不同,確保信息只能被授權的用戶通過特定手段處理后得知,非授權得到處理后的信息不能夠知曉原來信息。明文是原來的信息,這些信息需要進行特定的處理;加密就是信息處理的過程;密文是處理后產生的結果;密碼算法就是在信息處理時所規(guī)定的特定的規(guī)則;加密者是對明文進行加密的個體,接收者是接收加密后的密文并且解密密文的個體;而破譯者則是那利用一些密碼破解手段對明文進行解密的非授權的個體[4]。如圖一所示: </

24、p><p>  圖2-1 加密系統(tǒng)圖</p><p>  (1)明文空間M,它是指明文。</p><p>  (2)密文空間C,它是指明文。</p><p>  (3)密鑰空間K,它是一個密鑰對,包括加密密鑰K和解密密鑰K´,既K=<K, K´>。</p><p>  (4)加密算法E,它是

25、對M進行加密變換成C。</p><p>  (5)解密算法D.它是對C進行解密變換成M。</p><p>  對于明文M,加密算法E在密鑰K的控制下將明文M加密成密文,而解密算法D在密鑰K´的控制下將密文C解密出同一明文M,即 Ek(m)=c, Dk(c)=m[5]。對于每一個確定的密鑰,加密算法將確定一個具體的加密變換,解密算法將確定一個具體的解密變換,且解密變換是加密變換的逆

26、變換[6]。</p><p>  2.2 密碼學的發(fā)展歷史</p><p>  密碼學的發(fā)展經歷的漫長的時機,最早可以追溯到幾千年前。其大致可以分為3個階段:</p><p>  第1階段是從幾千年前到1949年。這一時期可以看著是科學密碼學的前夜[7]。這時的密碼設計和破譯還沒有具體的理論和規(guī)則。多數只能靠密碼專家個人的天賦。</p><p&

27、gt;  第2階段是從1949年到1975年。Shannon在1949年發(fā)表的《保密系統(tǒng)的信息理論》一文,是密碼學開始的標志[7]。這篇文章為對稱密鑰密碼系統(tǒng)的建立提供了理論基礎,密碼學從此正式成為了一門新的學科。</p><p>  第3階段是從1976年至今。1976年Diffie和Hellman發(fā)表了《密碼學新方向》一文,提出了公鑰密碼理論。他們首次證明了在發(fā)送端和接收端不需要傳輸密鑰的保密通信的可能性,從

28、而開創(chuàng)了公鑰密碼學的新紀元[7]。</p><p>  2.3 密碼技術的國內外發(fā)展狀況</p><p>  國際上的密碼技術主要分為兩類,一類是基于數學的密碼理論與技術,比如公鑰密碼、分組密碼、序列密碼、PKI技術等。另一類是非數學的密碼理論與技術,比如量子密碼,基于生物特征的識別理論與技術等[8]。對稱密鑰密碼和公鑰密碼相比較各自具有不同的特點。</p><p&g

29、t;  目前,基于數學的密碼理論與技術被廣泛的運用在各個領域。公鑰密碼自1979年以來至今,已經有了多種不同的公鑰體制誕生。其中主要有兩類:一類基于大數因子分解問題,比如經典的公鑰密碼系統(tǒng)RSA;另一類基于離散對數問題,比如橢圓曲線公鑰體制[8]。由于大數因子分解的能力在不斷的發(fā)展,使用RSA的安全性也隨之受到威脅。人們通過增加密鑰的長度以提高大數因子分解的難度來保證提高它的安全性。一般密鑰長度為1024比特。公鑰密碼體制主要用于數字簽

30、名和密鑰分配,如PKI。PKI如今已經成為公鑰密碼體制研究的一個熱門。</p><p>  序列密碼的理論已經很成熟了。它被廣泛的運用在政府和軍方要害部門的信息安全上[8]。雖然目前序列密碼已經不是一個熱點,但是它依舊具有很高的價值。比如R C4被用于存儲加密中。</p><p>  1977年制定的分組密碼除了公布具體的算法之外,從來不公布詳細的設計規(guī)則和方法。DES是分組密碼系統(tǒng)中的經

31、典代表。分組密碼的優(yōu)點在于它的加密速率快,效率高,被廣泛應用在對大文件加密上。</p><p>  非數學的密碼理論與技術,如量子密碼,基于生物特征的識別理論與技術等,目前也受到密碼學家的高度關注,在國際上進行熱烈的討論和研究[8]。這些密碼技術是與其他學科技術結合在一起,大大加強了密碼的安全性。</p><p>  國外目前不僅在密碼基礎理論方面的研究做的很好,而且在實際應用方面也傲的非

32、常好[8]。歐美等國都制定了一系列規(guī)范的密碼標準。算法的征集和討論都已經公開化。我國在這些方面卻遠未達到。因此,國內的密碼技術要想趕上國際上的水平,我們就需要和國際接軌。不僅要學習新的密碼技術,也要建立自己的密碼體制和創(chuàng)新機制。</p><p>  2.4密碼技術的發(fā)展方向</p><p>  盡管對稱密鑰密碼和公鑰密碼進過多年的發(fā)展和實踐,已經有了十分完整的體系。但是在這信息高速發(fā)展的時

33、代,各種威脅對安全構成了嚴重的挑戰(zhàn),已有的密碼技術對這些威脅的抵抗顯得有些力不從心,所以我們需要發(fā)展新的的密碼技術來實現(xiàn)信息安全的保障。</p><p>  由于破解能力的增強,單一密碼的安全性變大越來越低,所以,密碼專家們把多種密碼結合使用,創(chuàng)立出的混合密碼體系變?yōu)榱诵碌陌l(fā)展方向。由 IBM 等公司于 1996 年聯(lián)合推出的用于電子商務的協(xié)議標準 SET(Secure Electronic Transactio

34、n)中和 1992 年由多國聯(lián)合開發(fā)的 PGP 技術中,均采用了包含單鑰密碼、雙鑰密碼、單向雜湊算法和隨機數生成算法在內的混合密碼系統(tǒng)[9]。</p><p>  同時,一些新的密碼理論也被提了出來。近年來研究火熱的混沌密碼學就是其中之一。它綜合應用了混沌理論、密碼學、通信工程等方面的理論。還有基于一些其他學科發(fā)展而發(fā)展的新密碼技術,有基于物理中的光學和量子理論的量子密碼,基于生物特征密碼技術,指紋加密、瞳孔加密

35、等的高新密碼技術。</p><p>  當然,密碼學專家們也沒放棄對原有密碼體制的繼續(xù)改進,進而增強它們的安全性。比如增加密鑰長度來加強RSA的安全性,增加迭代輪數來加強DES加密的強度等方法。</p><p>  這些新的密碼覺有很高的安全性,同時也有很強的靈活性,為信息加密安全將提供了強有力的保障。</p><p>  3 加密算法的分析</p>

36、<p>  加密算法主要分為對稱密鑰密碼和公鑰密碼。在對稱密鑰密碼中,DES加密算法最具有代表性。同為分組加密算法的IDEA加密算法,具有比DES加密算法更強的安全性和加密速度,因此有著廣泛的應用。而在公鑰密碼中,基于大數分解的RSA加密算法是其代表。它們也是加密技術中的基礎的技術。學習和掌握它們,對學習其他加密技術將有十分有力的幫助。</p><p>  3.1 DES加密算法</p>

37、<p>  3.1.1 DES概述</p><p>  數據加密標準(DES,Data Encrpytion Standard)是一種使用密鑰加密的塊密碼,1976年被美國聯(lián)邦政府的國家標準局確定為聯(lián)邦資料處理標準(FIPS),隨后在國際上廣泛流傳開來。它基于使用56位密鑰的對稱算法。這個算法因為包含一些機密設計元素,相對短的密鑰長度以及被懷疑內含美國國家安全局(NSA)的后門而在開始時是有爭議的

38、,因此DES因此受到了強烈的學院派式的審查,并以此推動了現(xiàn)代的塊密碼及其密碼分析的發(fā)展[10]。</p><p>  3.1.2 DES加密算法詳解</p><p>  DES是混亂和擴散的組合。DES用一個56位的密鑰對64位的明文分組進行操作,將其轉換成一個64為的密文。它的基本思路是:把明文M通過一個初始置換,轉換成M0,并分成左右兩個32為長度的部分,即:L0和R0。然后將R0與

39、子密鑰K1進行F函數的運算,結果在與L0進行異或。異或后的結果與L0進行左右交換,成為L1和R1。如此進行16次迭代,再經過一個木置換(初始置換的逆置換)得到密文。</p><p><b>  加密過程:</b></p><p>  (1)將明文分成多個64bit的組,不足64bit的以適當的形式補足。</p><p> ?。?)進行16輪的相

40、同的運算。這些運算被稱為函數F。即Li=Ri-1,Ri=Li-1f(Ri-1,Ki)(1≤i≤16).Ki為第i輪計算中使用的子密鑰。</p><p><b>  以第一次迭代為例:</b></p><p>  首先,將64bit大小的分組M分為左右兩個大小均為32bit的部分L0,R0。</p><p>  其次,保持L0不變,根據固定替換表

41、E把R0由32位擴展成48位。把擴展后的48位R0與第1次迭代生成的48位加密密鑰進行按位異或操作,形成一個新的48位的R。</p><p>  再次,把R視為8個6bit的分組。每個6bit組依次與S盒進行替換運算。第一個比特和最后一個比特組合來確定S盒中的行,中間四位二進制數確定S盒中的列。由行列所對應的數轉換為4bit來替換6bit的組,由此將48bit的R轉換為32bit。接著將R與固定的置換P來進行置換

42、,得到函數F的結果P(C)。</p><p>  最后,將函數F的結果P(C)與L0進行異或運算,結果為R1。L1的值為R0。</p><p>  DES需要進行16次的迭代,在完成之前,把第i-1次得到的L和R的值作為第i次的輸入數據,第i次迭代要選擇第i次迭代生成的密鑰與數據進行按位異或。</p><p>  DES算法的前15次迭代每完成一次迭代都要交換L和R

43、的值,第16次迭代不交換兩者的數值.。</p><p>  (3)應用初始置換IP的逆置換IP-1對L16R16進行置換,得到密文C[7]。</p><p><b>  解密過程:</b></p><p>  對密文C逆序使用密鑰方案,輸出明文M。</p><p>  每一輪的加密算法過程如下[11]:</p>

44、;<p>  圖3-1 每一輪DES加密過程</p><p>  3.1.3 DES密鑰計算</p><p>  子密鑰由初始密鑰K計算得出。具體步驟如下[7]:</p><p> ?、賹τ谝粋€給定的初始密鑰K,刪除其中的8位的校驗位,然后進行如下運算:PC-1(K)=C0D0。PC-1是對余下56位的固定置換,并將結果分為28bit的C0,D0兩個

45、部分。</p><p> ?、谟嬎鉉i=LSi(Ci-1),Di=LSi(Di-1),Ki=PC-2(CiDi)(1≤i≤16)。LSi表示一個位置或者兩個位置的向左循環(huán)移位,PC-2表示為另外一個固定置換。</p><p> ?、劢涍^16次迭代過后,生產16個48為的子密鑰。</p><p>  3.1.4 DES安全性分析</p><p&g

46、t;  自從DES算法被公諸于世以來,學術界對DES的安全性和破譯的方法進行了激烈的爭論,其中對密鑰長度、迭代次數、S盒的設計是人們所關注的焦點[12]。</p><p>  由于DES采用的對稱加密的體制,這使得加解密雙方使用相同或者可以相互推導的密鑰,因此密鑰的安全分發(fā)成為了整個加密體系中一個十分薄弱,且具有巨大風險的環(huán)節(jié)。再加上DES算法的密鑰更新的間隔時間較長,密碼攻擊者就足夠的時間去破解密鑰,這也為安全

47、加密安全提供很大的威脅。</p><p>  根據目前的分析,輪數為16輪的DES仍然是安全的。但是如果加密輪數變小,特別是10輪以下,就容易被破解。而達到16輪的DES,破解方式主要是窮舉攻擊。但是使用窮舉攻擊想要在短時間內破解,是十分困難的。這種攻擊方式需要攻擊者使用十分昂貴的高速計算機進行窮舉。所以,使用DES算法應該不使用輪數小于16的[12]。密碼專家也盡力擴大在一個迭代密碼算法的輪數來改進算法[13]

48、。</p><p>  在DES中存在4個弱密鑰和12個半弱密鑰。,密鑰初始值被分成了兩部分,每一部分可以獨立地移動。如果每一部分的所有位都是0或l,那么算法的任意一輪的子密鑰都是相同的。所謂“弱密鑰”,指的是密鑰全是1或0,或者一半是1,一半是0的情況。所謂“半弱密鑰”,指的是密鑰對里的一個密鑰能解密另一個密鑰加密的信息。弱密鑰和半弱密鑰的產生,主要是有DES算法的子密鑰產生方式所決定的。在產生子密鑰的過程中,

49、人們需要不斷檢查來避免弱密鑰的產生[14]。</p><p>  密鑰長度是安全性的一個重要方面。雖然,在目前的情況下,64位密鑰長度DES想要使用窮舉方式破解依然具有比較大的難度。然而,隨著計算機技術的發(fā)展,在未來,速度更快,價格低廉的計算機將會不斷面世。這位DES的生存帶來挑戰(zhàn)。所以,很多專家都建議增加密鑰長度,并且做了這方面的改進。3DES就是其中的代表。3DES就是使用2個密鑰對明文進行3次的DES加密。

50、得到的密文在目前破解技術下具有極高的安全性。</p><p>  在DES加密算法實現(xiàn)過程中,S盒作為DES算法的核心其中決定性的作用。S盒式整個算法中唯一的非線性部件。一個保密的,設計巧妙的S盒能為DES加密的安全性提供極大的支持。雖然它的設計原理沒有被公布,但是有一些設計原則可以提供參考[7]:</p><p>  ①所有S盒的每一行是0,1,2,...,15的一個置換。</p&

51、gt;<p>  ②所有S盒的輸出都不是輸入的線性函數或仿射函數;</p><p>  ③S盒的輸入改變任意一位都會引起輸出中至少兩位發(fā)生變化;</p><p>  ④對于任何輸入x(6位),S(x)與S(x001100)至少有兩位不同;</p><p> ?、輰τ谌魏屋斎離(6位),S(x)與S(x00ef00)不相等,e,f取0或1;</p&

52、gt;<p>  3.2 RSA加密算法</p><p>  3.2.1 RSA概述</p><p>  RSA是Rivest、Shamir和Adleman在1977年提出的一種公開密鑰密碼體制,目前已成為公鑰密碼的國際標準。RSA的理論基礎是數論中的一條重要論斷:對一個具有大素數因子的大數進行分解是非常困難的。目前,RSA在世界范圍內被廣泛地應用于各種產品、平臺等軟件上

53、[15]。RSA系統(tǒng)是公鑰加密系統(tǒng)中最具代表性也最經典的,大多數目前廣泛被使用的公鑰加密和數字簽名的產品與標準都是使用RSA算法。</p><p>  RSA算法是第一個既用于數據加密也用于數字簽名的公鑰算法,所以它成為為公用網絡上信息提供加密和鑒別一種重要方法。它會產生一對密鑰,即公鑰和私鑰。私鑰被用戶保存著,不進行對外公開;公鑰則向外進行公開,由他人使用。在用RSA加密是,首先他人使用公鑰對明文進行加密并且傳

54、遞給用戶,用戶得到密文后,使用自己的私鑰進行解密,還原出明文信息。為了保證密鑰的安全性,RSA密鑰要求至少為500位的長度,一般情況下推薦使用1024位長度的密鑰。 </p><p>  基于下面的事實,保證了RSA算法的安全性和有效性:</p><p>  (1)已有確定一個數是不是質數的快速算法。</p><p>  (2)尚未找到確定一個合數的質因子的快速算法

55、。</p><p>  目前,由于電子商務和其它因特網的應用需求的日益激增,公鑰體系得到極大的發(fā)展。其中包括對服務器訪問控制和對電子商務交易過程的安全保護,以及權利保護、個人隱私、無線交易和內容完整性(如保證新聞報道或股票行情的真實性)等方面的需求。公鑰技術發(fā)展趨勢就是PKI與操作系統(tǒng)的集成,PKI是“Public Key Infrastructure”的縮寫,意為“公鑰基礎設施”。目前,公鑰體制廣泛地用于CA認

56、證、數字簽名和密鑰交換等領域。</p><p>  公鑰加密中使用最廣的就是RSA算法。RSA算法的一大用處就是解決DES加密算法的密鑰管理和分發(fā)的問題。由于RSA的算法復雜,因此通常情況下人們不使用RSA加密算法來對大的數據文件進行加密,而使用DES加密。但是,DES系統(tǒng)有一個巨大的風險便是它的密鑰分發(fā)過程。使用RSA算法來加密DES算法的密鑰來進行密鑰分發(fā),其結果非常好,成功的解決了這一問題。RSA的另一大用

57、處便是數字簽名。數字簽名可以很容易的發(fā)現(xiàn)密文電文是否被篡改,從而對數據信息的完整性進行驗證。</p><p>  3.2.2 RSA算法描述</p><p>  密鑰對的產生[16]:</p><p>  1、隨意選擇兩個大的質數p和q,p不等于q,計算模數N=p*q。</p><p>  2、根據歐拉函數,不大于N且與N互質的整數個數為(

58、p-1)(q-1)</p><p>  3、選擇一個整數e與(p-1)(q-1)互質,并且e小于(p-1)(q-1)</p><p>  4、用以下這個公式計算d:d* e ≡ 1 (mod (p-1)(q-1))</p><p>  5、將p和q的記錄銷毀。(N,e)是公鑰,(N,d)是私鑰。</p><p>  加密過程:用下面這個公式他

59、可以將n加密為c[16]:</p><p>  解密過程:用以下這個公式來將c轉換為n[16]:</p><p>  3.2.3 RSA安全性分析</p><p>  自公鑰加密問世以來,密碼學家們提出了多種不同的公鑰加密方法,它們的安全性都是基于復雜的數學難題之上。對極大整數做因數分解的難度決定了RSA算法的可靠性。換言之,對一極大整數做因數分解愈困難,RSA算

60、法愈可靠。如果說一種能快速進行因數分解的方法問世之后,那么RSA的安全性將極度下降。目前,對RSA的破解還十分有難度,比如使用強力破解的方式只對短密鑰長度的RSA算法有效,密鑰變長后,這種破解方式也就無效了。到2008年為止,世界上還沒有任何可靠的攻擊RSA算法的方式。但在分布式計算技術和量子計算機理論日趨成熟的今天,RSA加密安全性受到了挑戰(zhàn)[16]。</p><p>  目前RSA算法的三種可能的攻擊的方法是

61、:(1)強行攻擊:這包含對所有可能的私有密鑰進行逐一嘗試,即遍歷法進行搜索;(2)數學攻擊:對兩個素數乘積的因子進行分解;(3)定時攻擊:這依賴于解密算法的運行時間[17]。</p><p> ?。?)強行攻擊的防范方式</p><p>  對于RSA強行攻擊的防范方式其實很簡單,那就是增加密鑰的長度。隨著分解大整數方法的進步、計算機運算速度的提高以及網絡的發(fā)展,短密鑰的破解變得越來越容易

62、,因此,增加密鑰長度是提高密鑰破解難度,保證RSA的安全性的重要方法。目前,一般認為RSA的密鑰需要有1024位以上的長度才能保障安全。但是密鑰長度的增加對加密的效率帶來了很大的影響。效率地下使的RSA的應用范圍受到嚴重的制約。</p><p> ?。?)數學攻擊的防范方式</p><p>  對于數學攻擊,算法的發(fā)明者建議對p和q采用了許多限制[17]:(1)p和q的長度至少為10140

63、的數量級;(2)(P-1)和(q-1)都應該包含大整數因子;(3)gcd(p-1,q-1)應該小。</p><p> ?。?)對于定時攻擊的防范方式</p><p>  防范定時攻擊的方法其實很簡單,以下有三種方法可供參考[17]:(1)常數取冪時間:保證所有的取冪操作在返回結果之前都花費相同的時間;(2)隨機延時:用一個隨機的延時來迷惑攻擊者,這既保證了安全性,也可以提高性能;(3)盲化

64、:在進行取冪運算之前,用一個隨機數與密文進行相乘,防止了攻擊者了解正在處理的密文,防范逐位分析。</p><p>  3.3 IDEA加密算法</p><p>  3.3.1 IDEA概述</p><p>  IDEA是旅居瑞士中國青年學者來學嘉和著名密碼專家J.Massey于1990年提出的。它在1990年正式公布并在以后得到增強。這種算法以DES加密算法為基

65、礎,接收了DES加密的思想,是對稱加密的一種。IDEA的密鑰為128位,其中有效位是112位,這么長的密鑰在今后若干年內應該是安全的。 </p><p>  IDEA算法也是一種基于數據塊的加密算法,它設計了一系列加密輪次,每輪加密都使用從完整的加密密鑰中生成的一個子密鑰。不過它采用軟件實現(xiàn)和采用硬件實現(xiàn)同樣快速。 </p><p>  IDEA曾今也是AES算法標準的主要競爭者,其安全性

66、已經在國際密碼年會上被證明。</p><p>  IDEA和DES一樣都是分組加密算法中的一員。但是比起DES,IDEA的速度更快,安全性更強。因此,IDEA具有十分良好的應用前景[18]。</p><p>  3.3.2 IDEA算法描述</p><p>  輸入的64位數據分組被分成4個16-位子分組:xl,x2,x3和x4。這4個子分組成為算法的第一輪的輸入

67、,總共有8輪。在每一輪中,這4個子分組相互相異或,相加,相乘,且與6個16-位子密鑰相異或,相加,相乘。在輪與輪間,第二和第三個子分組交換。最后在輸出變換中4個子分組與4個子密鑰進行運算。</p><p>  在每一輪中,執(zhí)行的順序如下[19]:</p><p>  (1)x1和第一個子密鑰相乘。</p><p>  (2)x2和第二個子密鑰相加。</p>

68、;<p>  (3)x3和第三個子密鑰相加。</p><p>  (4)x4和第四個子密鑰相乘。</p><p>  (5)將第(1)步和第(3)步的結果相異或。 ·</p><p>  (6)將第(2)步和第(4)步的結果相異或。</p><p>  (7)將第(5)步的結果與第五個子密鑰相乘。</p>

69、<p>  (8)將第(6)步和第(7)步的結果相加。</p><p>  (9)將第(8)步的結果與第六個子密鑰相乘。</p><p>  (10)將第(7)步和第(9)步的結果相加。</p><p>  (11)將第(1)步和第(9)步的結果相異或。</p><p>  (12)將第(3)步和第(9)步的結果相異或。</

70、p><p>  (13)將第(2)步和第(10)步的結果相異或。</p><p>  (14)將第(4)步和第(10)步的結果相異或。</p><p>  每一輪的輸出是第(11)、(12)、(13)和(14) 步的結果形成的4個子分組。將中間兩個分組分組交換(最后一輪除外)后,即為下一輪的輸入。</p><p>  經過8輪運算之后,有一個最終

71、的輸出變換[19]:</p><p>  (1) x1和第一個子密鑰相乘。</p><p>  (2) x2和第二個子密鑰相加。</p><p>  (3) x3和第三個子密鑰相加。</p><p>  (4) x4和第四個子密鑰相乘。</p><p>  最后,這4個子分組重新連接到一起產生密文。</p>

72、<p>  這個算法用了52個子密鑰。首先,將128位密鑰分成8個16位子密鑰。這些是算法的第一批8個子密鑰(第一輪六個,第二輪的頭兩個)。然后,密鑰向左環(huán)移x位后再分成8個子密鑰。開始4個用在第二輪,后面4個用在第三輪。密鑰再次向左環(huán)移25位產生另外8個子密鑰,如此進行直到算法結束[19]。</p><p>  IDEA總共需要52個子密鑰,其中48個子密鑰分別使用在8輪迭代操作中,每輪迭代使用6

73、個子密鑰,另外4個子密鑰是額外子密鑰。這52個子密鑰都是從128位密鑰中擴展出來的,因此,模乘逆運算和模乘運算是IDEA算法的關鍵運算。其中,模乘逆運算運用于密鑰擴展,復雜度較高,而模乘運算直接關系到IDEA的加解密速度[20]。</p><p>  3.3.3 IDEA安全性分析</p><p>  IDEA可以說是目前世界上一種十分安全的加密算法。曾經許多專家都對IDEA的弱點進行分

74、析,均沒有效果。對于IDEA的攻擊基本就只有窮舉攻擊了。然而,總所周知IDEA的密鑰達到了128位,換算成十進制數的話,那是一個十分龐大的天文數字。因此,破解它以目前的計算機的運算水平而言,基本是不可能的事。因而對于它的算法安全性而言,人們是可以放心的。</p><p>  4 加密算法的實現(xiàn)</p><p>  本次軟件設計選擇用C++語言來實現(xiàn)。選擇C++來作為編程語言在于它具有許多

75、的優(yōu)點:第一,C++由C語言發(fā)展而來,它繼承了C語言的許多優(yōu)點,比如語法簡潔靈活,數據結構豐富,運行效率高等。第二,C++引入了類、虛函數、繼承等特性。這些特性使得C++能夠支持面向對象的編程,使編程更加快捷。第三,用C++編寫軟件能有效避免平臺限定或沒有普遍用途的特性。</p><p>  4.1 DES加密算法</p><p>  4.1.1 界面設計與代碼</p>

76、<p>  程序運行之后,在密鑰文本框中輸入8位密鑰,在明文文本框中輸入明文。點擊“加密”,把明文加密成密文;點擊“解密”,把密文還原成明文。</p><p>  圖4-1 DES初始界面</p><p><b>  其代碼如下:</b></p><p><b>  //加密過程</b></p>&

77、lt;p>  Int lenth; //輸入明文的長度</p><p>  void CBysjDlg::OnBtnDesE() </p><p><b>  {</b></p><p>  UpdateData(TRUE);</p><p>  lenth = m_DesM.GetLength();</p&

78、gt;<p>  char key[8];</p><p>  char Input[100],Output[100];</p><p>  memcpy(key,(LPCTSTR)m_DesK,8);</p><p>  memcpy(Input,(LPCTSTR)m_DesM,(lenth/8)*8);</p><p>  

79、CString str_C="";</p><p>  CDES des;</p><p>  des.Des_Go(Output, Input, sizeof(Input), key, sizeof(key), TRUE);</p><p>  for(int i=0;i<(lenth/8)*8+1;i++)</p>&l

80、t;p>  str_C += Output[i]; </p><p>  m_DesC=str_C;</p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p><b>  //解密過程</b></p><p&g

81、t;  void CBysjDlg::OnBtnDesD() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  UpdateData(TRUE);</p><p>  char

82、 key[8];</p><p>  char Input[100],Output[100];</p><p>  memcpy(key,(LPCTSTR)m_DesK,8);</p><p>  memcpy(Input,(LPCTSTR)m_DesC,(lenth/8)*8);</p><p>  CString str_M;</p

83、><p>  CDES des;</p><p>  des.Des_Go(Output, Input, sizeof(Input),key, sizeof(key), FALSE);</p><p>  for(int i=0;i<(lenth/8)*8;i++)</p><p>  str_M += Output[i];</p

84、><p>  m_DesDC=str_M;</p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p>  4.1.2 運行結果</p><p><b>  運行的結果如下圖:</b></p><p&g

85、t;  圖4-2 DES測試結果</p><p>  4.2 RSA加密算法</p><p>  4.2.1界面設計與代碼</p><p>  運行程序后,首先選擇密鑰長度,若不選擇,則顯示選擇提示。點擊“密鑰產生”按鈕,產生密鑰。輸入明文后點擊“加密”來進行加密,點擊“解密”來對密文解密成明文。</p><p>  圖4-3 RSA界

86、面設計</p><p><b>  其代碼如下:</b></p><p>  unsigned int p,q; //隨機素數</p><p>  unsigned int PublicKey; //公鑰</p><p>  unsigned int PrivateKey; //私鑰</p><p&g

87、t;  unsigned int N; //模數</p><p>  unsigned int Cryptograph[100]; //存儲密文</p><p>  unsigned int Lenght; //明文長度</p><p><b>  //密鑰產生</b></p><p>  void CBysjDlg::

88、OnBtnProKey() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  int len=GetDlgItemInt(IDC_COMBOKEYLENGTH);</p><p&g

89、t;  if(len == 0) MessageBox("請選擇密鑰!");</p><p><b>  else</b></p><p><b>  {</b></p><p>  UpdateData(TRUE);</p><p><b>  CRSA rsa;

90、</b></p><p>  //隨機產生兩個素數p,q</p><p>  srand( time( 0 ) );</p><p><b>  while (1)</b></p><p><b>  {</b></p><p>  p=(unsigned int

91、)rand();</p><p>  if(len == 32)</p><p><b>  {</b></p><p>  if (12<p && p<100 && rsa.IsPrime(p)) </p><p><b>  break;</b><

92、;/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if (99<p && p<250 && rsa.IsPrime(p)) </p>

93、;<p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  while (1)</b></p><p><b>  {</b>&

94、lt;/p><p>  q=(unsigned int)rand();</p><p>  if(len == 32)</p><p><b>  {</b></p><p>  if (12<q && q<100 && rsa.IsPrime(q)) </p>&l

95、t;p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if (99<q && q<250

96、 && rsa.IsPrime(q)) </p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //求模數N</b></p>

97、;<p><b>  N=p*q;</b></p><p>  //求歐拉函數Euler</p><p>  unsigned int Euler;</p><p>  Euler=(p-1)*(q-1);</p><p>  //隨機產生公鑰PublicKey</p><p>&l

98、t;b>  while(1)</b></p><p><b>  {</b></p><p>  PublicKey=(unsigned int) rand();</p><p>  if (PublicKey< Euler && rsa.gcd(PublicKey,Euler)==1) break;&l

99、t;/p><p><b>  }</b></p><p>  //計算私鑰PrivateKey</p><p>  PrivateKey=rsa.ProductD(PublicKey,Euler);</p><p>  m_Euler=Euler;</p><p>  m_Publickey=Publ

100、icKey;</p><p>  m_Privatekey=PrivateKey;</p><p><b>  m_N=N;</b></p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p><b>  //加

101、密過程</b></p><p>  void CBysjDlg::OnBtnRsaE() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  UpdateData(T

102、RUE);</p><p>  Lenght = m_RsaM.GetLength(); </p><p>  LPTSTR p = m_RsaM.GetBuffer(Lenght);</p><p>  char * CryptographCString = new char [Lenght];</p><p><b>  //加

103、密明文</b></p><p>  if(m_Publickey==0)</p><p>  MessageBox("請點擊密鑰產生,產生一個密鑰對!"); </p><p><b>  else</b></p><p><b>  {</b></p>

104、<p>  for (unsigned int i=0;i<Lenght;i++)</p><p><b>  {</b></p><p>  unsigned int temp= 1;</p><p>  for(unsigned int k=0;k<PublicKey;k++)</p><p>

105、<b>  {</b></p><p>  temp *= p[i];</p><p>  temp %= N; </p><p><b>  }</b></p><p>  Cryptograph[i] = temp % N;</p><p><b&g

106、t;  }</b></p><p>  for (i=0;i<Lenght;i++)</p><p><b>  {</b></p><p>  CryptographCString[i] = (char) Cryptograph[i];</p><p><b>  }</b>&l

107、t;/p><p>  m_RsaC.Format(_T("%s"),CryptographCString);</p><p><b>  }</b></p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p&g

108、t;<b>  //解密過程</b></p><p>  void CBysjDlg::OnBtnRsaD() </p><p><b>  {</b></p><p>  UpdateData(TRUE); </p><p>  char * Decrypt = new char[Len

109、ght];</p><p><b>  //解密密文</b></p><p>  for (unsigned int i=0;i<Lenght;i++)</p><p><b>  {</b></p><p>  unsigned int temp = 1;</p><p&

110、gt;  for(unsigned int k=0;k<PrivateKey;k++)</p><p><b>  {</b></p><p>  temp *= Cryptograph[i];</p><p>  temp %= N; </p><p><b>  }</b&

111、gt;</p><p>  Decrypt[i]= temp % N;</p><p><b>  }</b></p><p>  m_RsaDC.Format(_T("%s"),Decrypt);</p><p>  UpdateData(FALSE); </p><p>

112、;<b>  }</b></p><p>  4.2.2運行結果</p><p><b>  運行結果圖:</b></p><p>  圖4-4 運行結果圖</p><p>  圖4-5 RSA運行結果</p><p><b>  5 總結與展望</b&g

113、t;</p><p><b>  5.1 總結</b></p><p>  密碼技術的研究一直都是各國信息安全專家們研究的重點。在各國政府的大力投入下,各種密碼技術得到了大力的發(fā)展。但是,在密碼技術發(fā)展的同時,針對各種密碼技術的破解技術也同時在快速發(fā)展著。由此可見,當今的信息安全的威脅依舊嚴重。我們需要認清一個事實,那就是沒有永遠不被破解的加密。數據加密是肯定可以被

114、破解的, 但我們所想要的是一個特定時期的安全,也就是說, 密文的破解應該是足夠的困難, 至少是在短時間內實現(xiàn)是不可能的, 這也就需要我們不斷對加密技術進行新的研究和探索[21]。</p><p>  本文介紹了密碼技術的重要性和研究發(fā)展它的必要性。同時,本文選取了幾個加密算法進行深入分析和學習。DES和RSA分別作為對稱密鑰密碼和公鑰密碼的代表和基礎,分析它們能讓我們更好的學習和掌握著兩類密碼系統(tǒng)的算法基礎。它們

115、的加密思路推動了密碼技術的發(fā)展。IDEA作為DES加密算法的改進,把原來DES的56位密鑰擴展為128位。這大大加強了算法的安全性。同時,它的算法設計使IDEA的加密速度也高于DES。最后,通過C++語言,編寫了一個能夠實現(xiàn)DES和RSA兩種算法的軟件程序。</p><p><b>  5.2 展望</b></p><p>  21世紀是信息化的世紀。從計算機產生到

116、今天,信息在我們生活中的地位越來越高,重要性也越來越強。這使得我們對高效安全的密碼技術的需要越來越迫切。事物總是在向前發(fā)展,停止前進的總將會被淘汰。密碼技術也不例外。計算機性能和科學發(fā)展,縱然是密碼技術得到了提升,但是也為密碼的破解提供了助力。所以,我們需要不斷發(fā)展密碼技術來應對不斷加強且新穎的密碼攻擊技術,保證信息的安全性。</p><p>  密碼技術將會有如下的幾點發(fā)展:</p><p&

117、gt;  單一加密體制轉向混合加密體制。</p><p>  在原有的密碼基礎上不斷改進,不斷提高密碼的加密強度。</p><p>  在混沌理論的基礎上發(fā)展混沌密碼學。</p><p>  發(fā)展量子加密,實現(xiàn)在光纖中的數據安全。</p><p>  在生物特征的基礎上,發(fā)展利用人體聲音,照片,瞳孔等個人所特有的特征進行加密,實現(xiàn)數據安全。&

118、lt;/p><p><b>  參考文獻</b></p><p>  [1] 周宏仁.中國信息化和電子政務的發(fā)展[J].中國信息界,2010,01:4-8.</p><p>  [2] 劉康.淺析我國電子政務的發(fā)展現(xiàn)狀及完善對策[J].科技致富向導,2010,15:50.</p><p>  [3] 付增少,婁世峰,申瑞卜,

溫馨提示

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

最新文檔

評論

0/150

提交評論