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

下載本文檔

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

文檔簡介

1、<p>  本 科 生 畢 業(yè) 論 文(設 計)</p><p>  題 目:數(shù)據(jù)加密技術(shù)的研究綜述(模板)</p><p>  學習中心: </p><p>  層 次: ??破瘘c本科 </p><p>  專 業(yè): 網(wǎng)絡工程 &l

2、t;/p><p>  年 級: 2009年秋季 </p><p>  學 號: </p><p>  學 生: XXXX </p><p>  指導教師: XXX </p><p>  完成日期

3、: 2013年 03 月 18 日</p><p><b>  內(nèi)容摘要</b></p><p>  隨著計算機網(wǎng)絡技術(shù)的飛速發(fā)展,數(shù)據(jù)加密技術(shù)將成為信息網(wǎng)絡安全技術(shù)中的核心技術(shù),本文介紹了網(wǎng)絡與信息安全技術(shù)體系結(jié)構(gòu),對目前信息加密技術(shù)進行了分析,闡述了各類加密算法的優(yōu)缺點,同時對加密技術(shù)的發(fā)展趨勢進行了描述從最初的保密通信發(fā)展到目前的網(wǎng)絡信息加密。數(shù)據(jù)加密技術(shù)

4、是指將一個信息經(jīng)過加密鑰匙及加密函數(shù)轉(zhuǎn)換,變成無意義的密文,而接收方則將此密文經(jīng)過解密函數(shù)、解密鑰匙還原成明文。在競爭激烈的信息時代,客觀上需要一種強有力的安全措施來保護機密數(shù)據(jù)不被竊取或篡改,因此數(shù)據(jù)加密技術(shù)就應運而生。</p><p>  關(guān)鍵詞:信息安全 ;數(shù)據(jù)加密;加密鑰匙;解密鑰匙;加密算法 </p><p><b>  目 錄</b></p&

5、gt;<p><b>  內(nèi)容摘要I</b></p><p><b>  引 言1</b></p><p><b>  1 概述2</b></p><p><b>  1.1 背景2</b></p><p>  1.2 本文

6、的主要內(nèi)容及組織結(jié)構(gòu)3</p><p>  2 數(shù)據(jù)加密和加密系統(tǒng)4</p><p>  2.1 數(shù)據(jù)加密技術(shù)原理4</p><p>  2.2 數(shù)據(jù)加密技術(shù)的分類及其應用4</p><p>  2.3 加密系統(tǒng)體系5</p><p>  2.3.1 加密系統(tǒng)的分類5</p><

7、;p>  2.3.2 加密體制存在的問題6</p><p>  2.4 對稱加密、非對稱加密和數(shù)字簽名7</p><p>  3 DES加密標準9</p><p>  3.1 DES介紹和DES算法框架9</p><p>  3.2 DES實例分析9</p><p>  3.3 DES的安全

8、性和應用誤區(qū)12</p><p>  3.4 DES的拓展12</p><p>  3.4.1 3DES12</p><p>  3.4.2 AES算法13</p><p>  4 公開加密算法RSA14</p><p>  4.1 RSA的簡介14</p><p>  4

9、.2 RSA算法的結(jié)構(gòu)14</p><p>  4.3 RSA算法的案例14</p><p>  4.4 RSA探索22</p><p>  5 其他加密技術(shù)25</p><p>  5.1 MD525</p><p>  5.2 可變長密鑰塊Blowfish加密技術(shù)26</p>

10、<p>  5.3 橢圓曲線密碼體制27</p><p>  5.4 偽隨機數(shù)加密技術(shù)28</p><p><b>  6 結(jié)論32</b></p><p><b>  參考文獻33</b></p><p>  附錄一 偽隨機數(shù)加密法的加密和解密程序33</p>

11、<p><b>  引 言</b></p><p>  隨著網(wǎng)絡技術(shù)的發(fā)展,網(wǎng)絡安全也就成為當今網(wǎng)絡社會的焦點中的焦點,幾乎沒有人不在談論網(wǎng)絡上的安全問題,病毒、黑客程序、郵件炸彈、遠程偵聽等這一切都無不讓人膽戰(zhàn)心驚。病毒、黑客的猖獗使身處今日網(wǎng)絡社會的人們感覺到談網(wǎng)色變,無所適從。 </p><p>  用戶必需清楚地認識到,這一切一切的安全問題不

12、可一下全部找到解決方案,況且有的是根本無法找到徹底的解決方案,如病毒程序,因為任何反病毒程序都只能在新病毒發(fā)現(xiàn)之后才能開發(fā)出來,目前還沒有哪能一家反病毒軟件開發(fā)商敢承諾他們的軟件能查殺所有已知的和未知的病毒,所以用戶不能有等網(wǎng)絡安全了再上網(wǎng)的念頭,因為或許網(wǎng)絡不能有這么一日,就象“矛”與“盾”,網(wǎng)絡與病毒、黑客永遠是一對共存體。</p><p>  現(xiàn)代的電腦加密技術(shù)就是適應了網(wǎng)絡安全的需要而應運產(chǎn)生的,它為用戶

13、進行一般的電子商務活動提供了安全保障,如在網(wǎng)絡中進行文件傳輸、電子郵件往來和進行合同文本的簽署等。其實加密技術(shù)也不是什么新生事物,只不過應用在當今電子商務、電腦網(wǎng)絡中還是近幾年的歷史。</p><p>  加密作為保障數(shù)據(jù)安全的一種方式,它不是現(xiàn)在才有的,它產(chǎn)生的歷史相當久遠,它是起源于要追溯于公元前2000年(幾個世紀了),雖然它不是現(xiàn)在所講的加密技術(shù)(甚至不叫加密),但作為一種加密的概念,確實早在幾個世紀前就

14、誕生了。當時埃及人是最先使用特別的象形文字作為信息編碼的,隨著時間推移,巴比倫、美索不達米亞和希臘文明都開始使用一些方法來保護他們的書面信息。</p><p>  近期加密技術(shù)主要應用于軍事領域,如美國獨立戰(zhàn)爭、美國內(nèi)戰(zhàn)和兩次世界大戰(zhàn)。最廣為人知的編碼機器是German Enigma機,在第二次世界大戰(zhàn)中德國人利用它創(chuàng)建了加密信息。此后,由于Alan Turing和Ultra計劃以及其他人的努力,終于對德國人的密

15、碼進行了破解。當初,計算機的研究就是為了破解德國人的密碼,人們并沒有想到計算機給今天帶來的信息革命。隨著計算機的發(fā)展,運算能力的增強,過去的密碼都變得十分簡單了,于是人們又不斷地研究出了新的數(shù)據(jù)加密方式,如利用ROSA算法產(chǎn)生的私鑰和公鑰就是在這個基礎上產(chǎn)生的。</p><p>  本文主介紹究各種加密算法以及各類加密算法的優(yōu)缺點,以及各類加密技術(shù)在軍事、科學等多方面的應用。</p><p&g

16、t;<b>  1 概述</b></p><p><b>  1.1 背景 </b></p><p>  當今網(wǎng)絡社會選擇加密已是我們必然選擇,一方面是因為在互聯(lián)網(wǎng)上進行文件傳輸、電子郵件商務往來存在許多不安全因素,特別是對于一些大公司和一些機密文件在網(wǎng)絡上傳輸。而且這種不安全性是互聯(lián)網(wǎng)存在基礎——TCP/IP協(xié)議所固有的,包括一些基于TCP

17、/IP的服務;另一方面,互聯(lián)網(wǎng)給眾多的商家?guī)砹藷o限的商機,互聯(lián)網(wǎng)把全世界連在了一起,走向互聯(lián)網(wǎng)就意味著走向了世界,這對于無數(shù)商家無疑是夢寐以求的好事,特別是對于中小企業(yè) 。為了解決這一對矛盾,選擇數(shù)據(jù)加密以及基于加密技術(shù)的數(shù)字簽名已成為必然選擇。</p><p>  隨著信息技術(shù)的發(fā)展與應用,信息安全的內(nèi)涵在不斷的延伸,從最初的信息保密性發(fā)展到信息的完整性、可用性、可控性和不可否認性,進而又發(fā)展為"攻

18、(攻擊)、防(防范)、測(檢測)、控(控制)、管(管理)、評(評估)"等多方面的基礎理論和實施技術(shù)。 就理論研究而言,一些關(guān)鍵的基礎理論需要保密,因為從基礎理論研究到實際應用的距離很短?,F(xiàn)代信息系統(tǒng)中的信息安全其核心問題是密碼理論及其應用,其基礎是可信信息系統(tǒng)的構(gòu)作與評估??偟膩碚f,目前在信息安全領域人們所關(guān)注的焦點主要有以下幾方面: 1) 密碼理論與技術(shù); 2) 安全協(xié)議理論

19、與技術(shù); 3) 安全體系結(jié)構(gòu)理論與技術(shù); 4) 信息對抗理論與技術(shù); 5) 網(wǎng)絡安全與安全產(chǎn)品。 自從1976年公鑰密碼的思想提出以來,國際上已經(jīng)提出了許多種公鑰密碼體制,但比較流行的主要有兩類:一類是基于大整數(shù)因子分解問題的,其中最典型的代表是RSA;另一類是基于離散對數(shù)問題的,比如ElGamal公鑰密碼和影響比較大的橢圓曲線公鑰密碼。由于分解大整數(shù)的能力日益增強,所

20、以對RSA的安全帶來了一定的威脅。目前768比特模長的RSA已不安全。一般建議使用1024比特</p><p>  1.2 本文的主要內(nèi)容及組織結(jié)構(gòu)</p><p>  本文研究的內(nèi)容為幾種數(shù)據(jù)加密技術(shù)的原理及應用。</p><p>  第一章,主要是介紹數(shù)據(jù)加密技術(shù)的背景。</p><p>  第二章,主要是介紹數(shù)據(jù)加密技術(shù)的原理、數(shù)據(jù)加

21、密技術(shù)分類體系及各種加密技術(shù)的優(yōu)缺點。</p><p>  第三章,主要是介紹DES加密標準算法及DES標準算法案例。</p><p>  第四章,主要是介紹RSA加密算法標準、結(jié)構(gòu)以及RSA加密算法案例和探索。</p><p>  第五章,主要是介紹其他幾種加密技術(shù)的原理及應用。</p><p>  2 數(shù)據(jù)加密和加密系統(tǒng)</p&g

22、t;<p>  本部分主要介紹數(shù)據(jù)加密技術(shù)的基本原理,并介紹數(shù)據(jù)加密技術(shù)的分類,以及它們分別應用于什么場合,另外介紹一下加密系統(tǒng)的體系結(jié)構(gòu)和原理,具體介紹主要的加密技術(shù)如對稱加密、非對稱加密以及數(shù)字簽名等。</p><p>  2.1 數(shù)據(jù)加密技術(shù)原理</p><p>  數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種算法進行處理,使其成為不可讀的一段代碼,通常稱為“

23、密文”,使其只能在輸入相應的密鑰之后才能顯示出本來內(nèi)容,通過這樣的途徑達到保護數(shù)據(jù)不被人非法竊取、閱讀的目的。該過程的逆過程為解密,即將該編碼信息轉(zhuǎn)化為其原來數(shù)據(jù)的過程。</p><p>  當信息發(fā)送者需要發(fā)送信息時,首先生成一個對稱密鑰,用該對稱密鑰加密要發(fā)送的報文;信息發(fā)送者用信息接收者的公鑰加密上述對稱密鑰;信息發(fā)送者將第一步和第二步的結(jié)果結(jié)合在一起傳給信息接收者,稱為數(shù)字信封;信息接收者使用自己的私鑰解

24、密被加密的對稱密鑰,再用此對稱密鑰解密被發(fā)送方加密的密文,得到真正的原文[1]。 </p><p>  2.2 數(shù)據(jù)加密技術(shù)的分類及其應用</p><p>  加密技術(shù)通常分為兩大類:“對稱式”和“非對稱式”。</p><p>  對稱式加密就是加密和解密使用同一個密鑰,通常稱之為“Session Key ”這種加密技術(shù)目前被廣泛采用,如美國政府所采用的DES加密

25、標準就是一種典型的“對稱式”加密法,它的Session Key長度為56Bits。</p><p>  非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。這里的“公鑰”是指可以對外公布的,“私鑰”則不能,只能由持有人一個人知道。它的優(yōu)越性就在這里,因為對稱式的加密方法如果是在網(wǎng)絡上傳輸加密文件就很難把密鑰告訴對方,不管用什么方法都

26、有可能被別竊聽到。而非對稱式的加密方法有兩個密鑰,且其中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。</p><p><b>  ■SSL加密技術(shù)</b></p><p>  SSL3.0 用一種電子證書(electric certificate)來實行身份進行驗證后,雙方就可以用保密密鑰進行安

27、全的會話了。它同時使用“對稱”和“非對稱”加密方法,在客戶與電子商務的服務器進行溝通的過程中,客戶會產(chǎn)生一個Session Key,然后客戶用服務器端的公鑰將Session Key 進行加密,再傳給服務器端,在雙方都知道Session Key 后,傳輸?shù)臄?shù)據(jù)都是以Session Key 進行加密與解密的,但服務器端發(fā)給用戶的公鑰必需先向有關(guān)發(fā)證機關(guān)申請,以得到公證。</p><p><b>  ■VPN

28、加密</b></p><p>  將具有加密/解密功能的路由器使人們通過互聯(lián)網(wǎng)連接專用局域網(wǎng),這就是通常所說的虛擬專用網(wǎng)(VPN)。當數(shù)據(jù)離開發(fā)送者所在的局域網(wǎng)時,該數(shù)據(jù)首先被用戶端連接到互聯(lián)網(wǎng)上的路由器進行硬件加密,數(shù)據(jù)在互聯(lián)網(wǎng)上是以加密的形式傳送的,當達到目的LAN 的路由器時,該路由器就會對數(shù)據(jù)進行解密,這樣目的LAN 中的用戶就可以看到真正的信息了[2]。</p><p&g

29、t;  數(shù)據(jù)加密在銀行系統(tǒng)中的應用</p><p>  數(shù)據(jù)加密就是按照確定的密碼算法把敏感的明文數(shù)據(jù)變換成難以識別的密文數(shù)據(jù),通過使用不同的密鑰,可用同一加密算法把同一明文加密成不同的密文。當需要時,可使用密鑰把密文數(shù)據(jù)還原成明文數(shù)據(jù),稱為解密。這樣就可以實現(xiàn)數(shù)據(jù)的保密性。眾所周知,各種相關(guān) 網(wǎng)絡 安全的黑客和病毒都是依賴網(wǎng)絡平臺進行的,而如果在網(wǎng)絡平臺上就能切斷黑客和病毒的傳播途徑,那么就能更好地保證安全。眾

30、多銀行如農(nóng)業(yè)銀行、建設銀行、工商銀行等都采取了數(shù)據(jù)加密技術(shù)與網(wǎng)絡交換設備聯(lián)動。即是指交換機或防火墻在運行的過程中,將各種數(shù)據(jù)流的信息上報給安全設備,數(shù)字加密系統(tǒng)可根據(jù)上報信息和數(shù)據(jù)流內(nèi)容進行檢測,在發(fā)現(xiàn)網(wǎng)絡安全事件的時候,進行有針對性的動作,并將這些對安全事件反應的動作發(fā)送到交換機或防火墻上,由交換機或防火墻來實現(xiàn)精確端口的關(guān)閉和斷開,這樣就可以使數(shù)據(jù)庫得到及時充分有效的保護。由于金融系統(tǒng) “網(wǎng)上銀行”的興起,銀行系統(tǒng)的安全問題顯得越來

31、越重要,安全隱患已成為迫在眉睫的首要問題。為了解決銀行的安全隱患,因此各種數(shù)據(jù)加密在銀行系統(tǒng)中起著越來越重要的作用。</p><p><b>  2.3加密系統(tǒng)體系</b></p><p>  2.3.1加密系統(tǒng)的分類■對稱加密算法 對稱加密算法是應用較早的加密算法,技術(shù)成熟。在對稱加密算法中,數(shù)據(jù)發(fā)信方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后

32、,使其變成復雜的加密密文發(fā)送出去。收信方收到密文后,若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發(fā)收信雙方都使用這個密鑰對數(shù)據(jù)進行加密和解密,這就要求解密方事先必須知道加密密鑰。對稱加密算法的特點是算法公開、計算量小、加密速度快、加密效率高。應用于:電子商務?!霾粚ΨQ加密算法 不對稱加密算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和

33、私鑰。在使用不對稱加密算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時采用公鑰加密,解密密文時使用私鑰才能完成,而且發(fā)信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密算法的基本原理是,如果發(fā)信方想發(fā)送只有收信方才能解讀的加密信息,發(fā)信方必須首先知道收信方的公鑰,然后利用收信方的公鑰來加密原文;收信方收到</p><p>  2.3.2

34、 加密體制存在的問題■對稱加密算法 不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發(fā)收信雙方所擁有的鑰匙數(shù)量成幾何級數(shù)增長,密鑰管理成為用戶的負擔。對稱加密算法在分布式網(wǎng)絡系統(tǒng)上使用較為困難,主要是因為密鑰管理困難,使用成本較高。在計算機專網(wǎng)系統(tǒng)中廣泛使用的對稱加密算法有DES、IDEA和AES?!霾粚ΨQ加密算法 不對稱加密算法

35、使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時采用公鑰加密,解密密文時使用私鑰才能完成,而且發(fā)信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密算法的基本原理是,如果發(fā)信方想發(fā)送只有收信方才能解讀的加密信息,發(fā)信方必須首先知道收信方的公鑰,然后利用收信方的公鑰來加密原文;收信方收到加密密文

36、后,使用自己的私鑰才能解密密文。顯然,采用不對稱加密算法,收發(fā)信雙方在通信之前,收信方必須將自己早已隨機生成的</p><p>  2.4 對稱加密、非對稱加密和數(shù)字簽名</p><p>  對稱加密算法使用單個私鑰來加密和解密數(shù)據(jù)。由于具有密鑰的任意一方都可以使用該密鑰解密數(shù)據(jù),因此必須保護密鑰不被未經(jīng)授權(quán)的代理得到。 </p><p>  非對稱加密使用一個必

37、須對未經(jīng)授權(quán)的用戶保密的私鑰和一個可以對任何人公開的公鑰。公鑰和私鑰都在數(shù)學上相關(guān)聯(lián);用公鑰加密的數(shù)據(jù)只能用私鑰解密,而用私鑰簽名的數(shù)據(jù)只能用公鑰驗證。公鑰可以提供給任何人;公鑰用于對要發(fā)送到私鑰持有者的數(shù)據(jù)進行加密。兩個密鑰對于通信會話都是唯一的。</p><p>  數(shù)字簽名(Digital Signature)是公開密鑰加密技術(shù)的一種應用, 是指用發(fā)送方的私有密鑰加密報文摘要, 然后將其與原始的信息附加在一

38、起, 合稱為數(shù)字簽名。其使用方式是:報文的發(fā)送方從報文文本中生成一個128位或160位的單向散列值(或報文摘要),并用自己的私有的密鑰對這個散列值進行加密,形成發(fā)送方的數(shù)字簽名;然后將這個數(shù)字簽名作為報文的附件和報文一起發(fā)送給報文的接收方;報文的接收方首先從接收到的原始報文中計算出128位的散列值(或報文摘要),接著再用發(fā)送方的公開密鑰對報文附加的數(shù)字簽名進行解密;如果這兩個散列值相同,那么接收方就能確認數(shù)字簽名是發(fā)送方的。通過數(shù)字簽名

39、能夠?qū)崿F(xiàn)對原始報文的的鑒別和驗證,保證報文的完整性、權(quán)威性和發(fā)送者對報文的不可抵賴性。數(shù)字簽名機制提供了一種鑒別方法,普遍用于銀行、電子商務等, 以解決偽造、抵賴、冒充、篡改等問題。</p><p>  3 DES加密標準</p><p>  本部分主要介紹DES的定義、起源,并介紹DES算法的框架以及DES實際的案例,然后討論一下DES算法的安全性和DES的應用誤區(qū);最后介紹一下DES

40、的拓展算法,例如3DES、AES算法。</p><p>  3.1 DES介紹和DES算法框架</p><p>  它出自 IBM 的研究工作,并在 1997 年被美國政府正式采納。它很可能是使用最廣泛的密鑰系統(tǒng),特別是在保護金融數(shù)據(jù)的安全中,最初開發(fā)的 DES 是嵌入硬 件中的。通常,自動取款機(Automated Teller Machine,ATM)都使用 DES。</p&g

41、t;<p>  DES 使用一個 56 位的密鑰以及附加的 8 位奇偶校驗位,產(chǎn)生最大 64 位的分組大小。這是一個迭代的分組密碼,使用稱為 Feistel 的技術(shù),其中將加密的文本塊分成兩半。使用子密鑰對其中一半應用循環(huán)功能,然后將輸出與另一半進行“異或”運算;接著交換這兩半,這一過程會繼續(xù)下去,但最后一個循環(huán)不交換。DES 使用 16 個循環(huán)。</p><p>  DES 的主要形式被稱為蠻力的

42、或徹底密鑰搜索,即重復嘗試各種密鑰直到有一個符合為止。如果 DES 使用 56 位的密鑰,則可能的密鑰數(shù)量是 2 的 56 次方個。隨著計算機系統(tǒng)能力的不斷發(fā)展,DES 的安全性比它剛出現(xiàn)時會弱得多,然而從非關(guān)鍵性質(zhì)的實際出發(fā),仍可以認為它是足夠的。不過 ,DES 現(xiàn)在僅用于舊系統(tǒng)的鑒定,而更多地選擇新的加密標準 — 高級加密標準(Advanced Encryption Standard,AES)。 </p><p&

43、gt;  DES 的常見變體是三重 DES,使用 168 位的密鑰對資料進行三次加密的一種機制;它通常(但非始終)提供極其強大的安全性。如果三個 56 位的子元素都相同,則三重 DES 向后兼容 DES。</p><p>  3.2 DES實例分析</p><p>  密文到明文的解密過程可采用與加密完全相同的算法。不過解密要用加密的逆變換,就是把上面的最后換位表和初始換位表完全倒過來變

44、換。這里不再贅述。   下面這個例子中演示了如何使用c#中的加密包進行DES算法加密,大家可以借助這個例子一窺DES加密的用法。   des_demo.cs代碼如下:   using System;   using System.Security.Cryptography;   using System.IO;   using System.Text;   public class EncryptStringDES {

45、   public static void Main(String[] args) {    if (args.Length < 1) {    Console.WriteLine("Usage: des_demo   encrypt>", args[0]);    return;    }    // 使用UTF8函數(shù)加密輸入?yún)?shù) UTF8Encoding utf8Encodin

46、g = new UTF8Encoding(</p><p>  轉(zhuǎn)貼于 中國//DES_CSP DES = new DES_CSP();    // 初始化DES加密的密鑰和一個隨機的、8比特的初始化向量(IV)    Byte[] key = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab,   0xcd, 0xef};    Byte[] IV = {0x12, 0x34, 0

47、x56, 0x78, 0x90, 0xab,   0xcd, 0xef};    des.Key = key;    des.IV = IV;    // 建立加密流    SymmetricStreamEncryptor sse = des.CreateEncryptor();    // 使用CryptoMemoryStream方法獲取加密過程的輸出    CryptoMemoryStream cms = new Cr

48、yptoMemoryStream();    // 將SymmetricStreamEncryptor流中的加密數(shù)據(jù)輸出到   CryptoMemoryStream中    sse.SetSink(cm</p><p>  3.3 DES的安全性和應用誤區(qū)</p><p>  DES算法具有極高安全性,到目前為止,除了用窮舉搜索法對DES算法進行攻擊外,還沒有發(fā)現(xiàn)更有效的辦法。而56

49、位長的密鑰的窮舉空間為256,這意味著如果一臺計算機的速度是每一秒種檢測一百萬個密鑰,則它搜索完全部密鑰就需要將近2285年的時間,可見,這是難以實現(xiàn)的,當然,隨著科學技術(shù)的發(fā)展,當出現(xiàn)超高速計算機后,我們可考慮把DES密鑰的長度再增長一些,以此來達到更高的保密程度。 DES算法中只用到64位密鑰中的其中56位,而第8、16、24、......64位8個位并未參與DES運算,這一點,向我們提出了一個應用上的要求,即DES的安全性

50、是基于除了8,16,24,......64位外的其余56位的組合變化256才得以保證的。因此,在實際應用中,我們應避開使用第8,16,24,......64位作為有效數(shù)據(jù)位,而使用其它的56位作為有效數(shù)據(jù)位,才能保證DES算法安全可靠地發(fā)揮作用。如果不了解這一點,把密鑰Key的8,16,24,..... .64位作為有效數(shù)據(jù)使用,將不能保證DES加密數(shù)據(jù)的安全性,對運用DES來達到保密作用的系統(tǒng)產(chǎn)生數(shù)據(jù)被破譯的危險,這正是DES算法在應

51、用上的誤區(qū),</p><p>  3.4 DES的拓展</p><p>  3.4.1 3DES</p><p>  3DES(即Triple DES)是DES向AES過渡的加密算法(1999年,NIST將3-DES指定為過渡的加密標準),是DES的一個更安全的變形。它以DES為基本模塊,通過組合分組方法設計出分組加密算法,其具體實現(xiàn)如下:設Ek()和Dk()代表D

52、ES算法的加密和解密過程,K代表DES算法使用的密鑰,P代表明文,C代表密表,這樣, </p><p>  3DES加密過程為:C=Ek3(Dk2(Ek1(P))) </p><p>  3DES解密過程為:P=Dk1((EK2(Dk3(C))) [4] </p><p>  3.4.

53、2 AES算法</p><p>  AES是分組密鑰,算法輸入128位數(shù)據(jù),密鑰長度也是128位。用Nr表示對一個數(shù)據(jù)分組加密的輪數(shù)(加密輪數(shù)與密鑰長度的關(guān)系如表1所列)。每一輪都需要一個與輸入分組具有相同長度的擴展密鑰Expandedkey(i)的參與。由于外部輸入的加密密鑰K長度有限,所以在算法中要用一個密鑰擴展程序(Keyexpansion)把外部密鑰K擴展成更長的比特串,以生成各輪的加密和解密密鑰。&l

54、t;/p><p>  應用:主要用于基于私鑰數(shù)據(jù)加密算法的各種信息安全技術(shù)和安全產(chǎn)品中:</p><p>  1、無線網(wǎng)絡應用2、信息安全領域3、AES軟件應用4、虛擬專用網(wǎng)、同步光網(wǎng)絡、遠程訪問服務器,高速路由器、移動通信、衛(wèi)星通信、電子金融業(yè)務等。 </p><p>  4 公開加密算法RSA</p><p>  本章主要介紹非對稱加密算

55、法RSA的基本原理以及其算法結(jié)構(gòu),并舉出RSA算法的一個具體實例進行分析,最后討論一下RSA的探索——大整數(shù)運算。</p><p>  4.1 RSA的簡介</p><p>  RSA算法是第一個能同時用于加密和數(shù)字簽名的算法,也易于理解和操作。</p><p>  RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻擊的考驗,逐漸為人們接受,普

56、遍認為是目前最優(yōu)秀的公鑰方案之一。RSA的安全性依賴于大數(shù)的因子分解,但并沒有從理論上證明破譯RSA的難度與大數(shù)分解難度等價。即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數(shù)人士傾向于因子分解不是NPC問題。</p><p>  RSA的缺點主要有:A)產(chǎn)生密鑰很麻煩,受到素數(shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。B)分組長度太大,為保證安全性,n 至少也要 600bits以上,使運算代價很

57、高,尤其是速度較慢,較對稱密碼算法慢幾個數(shù)量級;且隨著大數(shù)分解技術(shù)的發(fā)展,這個長度還在增加,不利于數(shù)據(jù)格式的標準化。目前,SET(Secure Electronic Transaction)協(xié)議中要求CA采用2048bits長的密鑰,其他實體使用1024比特的密鑰。C)RSA密鑰長度隨著保密級別提高,增加很快。下表列出了對同一安全級別所對應的密鑰長度。</p><p>  這種算法1978年就出現(xiàn)了,它是第一個既

58、能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作,也很流行。算法的名字以發(fā)明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。早在1973年,英國國家通信總局的數(shù)學家Clifford Cocks就發(fā)現(xiàn)了類似的算法。但是他的發(fā)現(xiàn)被列為絕密,直到1998年才公諸于世。</p><p>  4.2 RSA算法的結(jié)構(gòu)</p><p>  RSA加密

59、算法使用了兩個非常大的素數(shù)來產(chǎn)生公鑰和私鑰。即使從一個公鑰中通過因數(shù)分解可以得到私鑰,但這個運算所包含的 計算 量是非常巨大的,以至于在現(xiàn)實上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數(shù)據(jù)變的有些不可行。這就使得一些現(xiàn)實中加密算法都基于rsa加密算法。pgp算法(以及大多數(shù)基于rsa算法的加密方法)使用公鑰來加密一個對稱加密算法的密鑰,然后再利用一個快速的對稱加密算法來加密數(shù)據(jù)。</p><p

60、> ?。?)RSA算法原理</p><p>  RSA算法是基于數(shù)論中的同余理論。如果用m代表明文,c代表密文,E(m)代表加密運算,D(c)代表解密運算,x=y(mode z)表示x和y模z同余,則加密和解密算法簡單表示如下:</p><p>  加密算法 c=E(m)=me(mod n)</p><p>  解密算法 m=D(c)=cd(mod n)<

61、;/p><p>  其中n和密鑰e是公開的,而密鑰d是保密的。</p><p>  下面討論密鑰的求?。?lt;/p><p>  ①選取兩個隨機大素數(shù)p和q(保密);</p><p><b> ?、谠On=p×q;</b></p><p> ?、蹥W拉函數(shù)φ(n)=(p-1)(q-1)(保密);&l

62、t;/p><p> ?、苓x取與φ(n)互素的正整數(shù)e,即滿足gcd(φ(n),e)=1和0<e<φ(n);</p><p>  ⑤計算d(保密),使?jié)M足e×d=1(mod φ(n)),即d和e相對于模φ(n)互為逆元素。</p><p>  由RSA算法原理可知,RSA算法的核心是求模取余運算,其安全性是建立在大合數(shù)因子分解困難的基礎之上的。<

63、;/p><p><b> ?。?)模運算的實現(xiàn)</b></p><p>  RSA算法的核心操作也是最耗時的操作是模運算,所以開發(fā)一種快速指數(shù)和取模運算是解決運算速度的關(guān)鍵。通常的模運算都是利用加減法來實現(xiàn)的,因為加減法指令的執(zhí)行速度快。在進行模運算時,一般先將指數(shù)e(長度為kbit)改寫成二進制數(shù)組的形式e,即</p><p>  其中:ei∈{

64、0,1},i=0,1,Λ,k-1。</p><p>  這樣,在計算me(mod n)時,先做一次平方運算,然后根據(jù)ei的值,再做一次乘法運算,以此來簡化模運算的復雜性。</p><p>  由于實際中的e值非常大,為了提高運算速度,可以將e進行分組后運算。設對e以四位一組(十六進制)的形式計算me(mod n),那么:</p><p>  其中:ei∈{0,1,2

65、,…,15},t=k/4;</p><p> ?、谇蟪鰉2,m3,…,m15(mod n);</p><p> ?、墼O置變量c:=1;</p><p> ?、軐τ趇=t-1,t-2,…,1,0重復計算:</p><p>  c:=c2(mod n)(平方);</p><p>  c:=c2(mod n)(四次方);&l

66、t;/p><p>  c:=c2(mod n)(八次方);</p><p>  c:=c2(mod n)(十六次方);</p><p>  e.若ei≠0,則c:=c×mei(mod n)。</p><p><b> ?、菟胏即為所求。</b></p><p>  4.3 RSA算法的案

67、例 例如大數(shù)18446744073709551615,等于 ffffffff ffffffff,就相當于十進制的99:有兩位,每位都是ffffffff。而18446744073709551616 等于00000001 0000000000000000,就相當于十進制的100:有三位,第一位是1 ,其它兩位是0,如此等等。 在實際應用中,“數(shù)字”數(shù)組的排列順序采用低位在前高位在后的方式,這樣,大數(shù)A 就可以方便地用數(shù)學表達

68、式來表示其值:A=Sum[i=0 to n](A[i]*0x100000000**i)(其中Sum 表示求和,A[i]表示用以記錄A 的數(shù)組的第i 個元素,**表示乘方)。 任何整數(shù)運算最終都能分解成數(shù)字與數(shù)字之間的運算,在0x100000000 進制下其“數(shù)字”最大達到0xffffffff,其數(shù)字與數(shù)字之間的運算,結(jié)果也必然超出了目前32系統(tǒng)的字長。在VC++中,存在一個__int64 類型可以處理64位的整數(shù),所以不用擔心這

69、一問題,而在其它編譯系統(tǒng)中如果不存在64位整形,就需要采用更小的進制方式來存儲大數(shù),例如WORD</p><p>  加法設:  A=Sum[i=0 to p](A[i]*0x100000000**i)  B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q  C=Sum[i=0 to n](C[i]*0x10

70、0000000**i)=A+B</p><p><b>  顯然:</b></p><p>  C[i]不是簡單地等于A[i]+B[i],因為如果C[i]>0xffffffff就需要進位,當然計算C[i-1]時也可能產(chǎn)生了進位,所以計算C[i]時還要加上上次的進位值。 如果用carry[i]記錄每次的進位則有:   C[i]=A[

71、i]+B[i]+carry[i-1]-carry[i]*0x100000000   其中carry[-1]=0   若A[i]+B[i]+carry[i-1]>0xffffffff,則carry[i]=1;反之則carry[i]=0   若carry[p]=0,則n=p;反之則n=p+1</p><p>  減法設: &#

72、160;A=Sum[i=0 to p](A[i]*0x100000000**i)  B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q  C=Sum[i=0 to n](C[i]*0x100000000**i)=A-B</p><p><b>  顯然:</b></p><p>  C[

73、i]不是簡單地等于A[i]-B[i],因為如果A[i]<B[i]就需要借位,當然計算 C[i-1]時也可能產(chǎn)生了借位,所以計算C[i]時還要減去上次的借位值。 如果用carry[i]記錄每次的借位則有:   C[i]=A[i]+carry[i]*0x100000000-B[i]-carry[i-1]  其中carry[-1]=0   若A[i]>

74、;B[i]則carry[i]=0;反之則carry[i]=1   若C[p]=0,則n=p-1;反之則n=p</p><p><b>  乘法</b></p><p>  設:  A=Sum[i=0 to p](A[i]*0x100000000**i)  B=Sum[i=0 to q](B[i]*0x

75、100000000**i),p>=q  C=Sum[i=0 to n](C[i]*0x100000000**i)=A*B</p><p>  顯然:  C=Sum[i=0 to q](A*B[i]*0x100000000**i)  而(A*B[i]*100000000**i)=Sum[j=0 to p](A[j]*B[i]*0x1000000

76、00**(i+j))  所以C=Sum[i=0 to q](Sum[j=0 to p](A[j]*B[i]*0x100000000**(i+j)))</p><p>  因此:  C[i]=Sum[j=0 to q](A[i-j]*B[j])+carry[i-1]-carry[i]*0x100000000  其中carry[-1]=0 

77、 carry[i]=(Sum[j=0 to q](A[i-j]*B[j])+carry[i-1])/0x100000000  n=p+q-1,若carry[n]>0,則n=n+1,C[n]=carry</p><p><b>  除法</b></p><p>  設:   A=Sum[i=0 to p](

78、A[i]*0x100000000**i)   B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q   C=Sum[i=0 to n](C[i]*0x100000000**i)=A/B</p><p>  由于無法將B 對A “試商”,我們只能轉(zhuǎn)換成B[q]對A[p]的試商來得到一個近似值,所以我們不能夠直接計算C。但是,我們

79、可以一步一步地逼近C</p><p>  顯然:   (A[p]/B[q]-1)*0x100000000**(p-q)<C</p><p><b>  令:  X=0</b></p><p>  重復:  A=A-X*B,X=X+(A[p]/B[q]-1)*0x10000

80、0000**(p-q),直到A<B</p><p><b>  則有:  X=C</b></p><p>  注意:   由于大數(shù)可理解為0x100000000進制,所以對于任意大數(shù)A*0x100000000**k 都等價于將A 的數(shù)組中的各元素左移k 位,不必計算;同樣,除法則等價于右移</p>

81、;<p><b>  取模</b></p><p>  設:  A=Sum[i=0 to p](A[i]*0x100000000**i)  B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q  C=Sum[i=0 to n](C[i]*0x100000000**i)=A%B&

82、lt;/p><p>  求模與求商的過程一致,只是由于不需要記錄商而更加簡單:</p><p>  重復:  A=A-(A[p]/B[q]-1)*0x100000000**(p-q)*B,直到A<B</p><p><b>  則有:  A=C</b></p><p><

83、;b>  二元一次方程:</b></p><p>  在RSA 算法中,往往要在已知A、M的情況下,求 B,使得 (A*B)%M=1。即相當于求解B、N都是未知數(shù)的二元一次不定方程 A*B-M*N=1,的最小整數(shù)解。</p><p>  而針對不定方程ax-by=1 的最小整數(shù)解,古今中外都進行過詳盡的研究,西方有著名的歐幾里德算法,即輾轉(zhuǎn)相除法,中國有秦九韶的“大衍求一

84、術(shù)”。歐幾里德算法是一種遞歸算法,比較容易理解:</p><p>  例如:11x-49y=1,求x    (a) 11 x - 49 y = 1    49%11=5 ->    (b) 11 x -  5 y = 1    

85、;11%5 =1 ->    (c)    x -  5 y = 1    令y=0 [來源:GameRes.com]代入(c)得x=1    令x=1 代入(b)得y=2    令y=2 代入(a)得x=

86、9</p><p>  同理可使用遞歸算法求得任意 ax-by=1(a、b互質(zhì))的解,實際上通過分析歸納將遞歸算法轉(zhuǎn)換成非遞歸算法就變成了大衍求一術(shù)。</p><p><b>  冪模運算:</b></p><p>  冪模運算是RSA 核心算法,最直接地決定了RSA 算法的性能,針對快速冪模運算這一課題,許多西方現(xiàn)代數(shù)學家提出了大量的解決方案

87、。通常都是先將冪模運算化簡為乘模運算。</p><p>  例如求D=C**15 % N,由于:        a*b % n = (a % n)*(b % n) % n</p><p>  所以:        C1=C*C

88、% N       =C**2 % N        C2=C1*C % N      =C**3 % N        C3=C2*C2 % N 

89、;    =C**6 % N        C4=C3*C % N      =C**7 % N        C5=C4*C4 % N    

90、=C**14 % N        C6=C5*C % N      =C**15 % N </p><p>  即:        對于E=15的冪模運算可分解為6個乘模運算</p&g

91、t;<p>  歸納分析以上方法可以發(fā)現(xiàn)對于任意E,可采用以下算法計算D=C**E % N:    D=1    WHILE E>=0      IF E為奇數(shù)        D=D*C %

92、N        D=D*D % N        E=E-1      IF E為偶數(shù)        D=D*D % N

93、0;       E=E/2    RETURN D</p><p>  再加以分析會發(fā)現(xiàn),要知道D 何時需乘 C,不需要反復對E 進行減一或除二的操作,只需要驗證E 的二進制各位是0 還是1 就可以了,而且從左至右驗證和從右至左驗證都行,反而從左至右驗證更簡單:</p><p>

94、;  若E=Sum[i=0 to n](E[i]*2**i),0<=E[i]<=1    D=1    FOR i=n TO 0      D=D*D % N      IF E[i]=1  

95、60;     D=D*C % N    RETURN D</p><p>  剩下的問題就是乘模運算了,對于A*B % N,如果A、B 都是1024位的大數(shù),先計算A*B,再% N,就會產(chǎn)生2048位的中間結(jié)果,如果不采用動態(tài)內(nèi)存分配技術(shù)就必須將大數(shù)定義中的數(shù)組空間增加一倍,這樣會造成大量的浪費,因為在絕大多數(shù)情況下不會

96、用到那額外的一倍空間,而采用動態(tài)內(nèi)存分配技術(shù)會使大數(shù)存儲失去連續(xù)性而使運算過程中的循環(huán)操作變得非常繁瑣。所以計算的首要原則就是要避免計算A*B。</p><p>  由于:        A*B=A*(Sum[i=0 to n](B[i]*0x100000000**i))</p><p>  所以:

97、0;       A*B % N = (Sum[i=0 to n]((A*B[i])*0x100000000**i)) % N</p><p>  可以用一個循環(huán)求得:    C=0;    FOR i=0 to n   

98、0;  C=C+A*B[i]*0x100000000 % N    RETURN C</p><p>  事實上,有一種蒙哥馬利算法能夠更快地完成多次循環(huán)的乘模運算,但是其原理涉及較多的數(shù)論知識,且實現(xiàn)起來比較麻煩,對速度雖有提高,經(jīng)測試也不會超過一個數(shù)量級,所以暫且不予考慮。</p><p>  素數(shù)測試 

99、0;  數(shù)論學家利用費馬小定理研究出了多種素數(shù)測試方法,目前最快的算法是拉賓米勒測試算法,其過程如下:</p><p> ?。?)計算奇數(shù)M,使得N=(2**r)*M+1(2)選擇隨機數(shù)A<N(3)對于任意i<r,若A**((2**i)*M) MOD N = N-1,則N通過隨機數(shù)A的測試(4)或者,若A**M MOD N = 1,則N通過隨機數(shù)A的測試(5)讓A取不同的值

100、對N進行5次測試,若全部通過則判定N為素數(shù)</p><p>  若N 通過一次測試,則N 不是素數(shù)的概率為 25%,若N 通過t 次測試,則N 不是素數(shù)的概率為1/4**t。事實上取t 為5 時,N 不是素數(shù)的概率為 1/128,N 為素數(shù)的概率已經(jīng)大于99.99%。</p><p>  在實際應用中,可首先用300—500個小素數(shù)對N 進行測試,以提高拉賓米勒測試通過的概率,從而提高測試

101、速度。而在生成隨機素數(shù)時,選取的隨機數(shù)最好讓 r=0,則可省去步驟(3) 的測試,進一步提高測試速度。</p><p>  輸入輸出    大數(shù)的輸入輸出是通過字符串來完成的,事實上很容易實現(xiàn),例如按照十進制格進行處理,則:</p><p>  輸入:    X=0   &#

102、160;FOR i=0 TO n      X=X*10      X=X+(int)(str[n]-48)    RETURN X</p><p>  輸出:    str=  

103、60; WHILE(X>0)      str=(char)(X%10-48)+str    RETURN str [5]</p><p>  4.4 RSA探索</p><p>  RSA算法中的加密解密操作,都是大整數(shù)的算術(shù)運算,在硬件實現(xiàn)上需要長的(千位以上的)運

104、算結(jié)構(gòu)。目前,在集成電路中進行大整數(shù)算術(shù)運算的結(jié)構(gòu)設計,需要做全局數(shù)據(jù)廣播,不僅扇出大、延時長,而且需要的連線資源很大。全局信號的廣播問題,在現(xiàn)有關(guān)于RSA硬件實現(xiàn)的文獻資料中很少提及。實際上,對于任何在深亞微米工藝條件下實現(xiàn)的集成電路,全局信號的廣播都是需要認真解決的問題。對于RSA模乘冪運算器這樣一個數(shù)據(jù)寬度特別大的結(jié)構(gòu),這個問題尤其重要,直接影響到設計的性能。 在基于冗余陣列的設計中,針對現(xiàn)有結(jié)構(gòu)中存在的問題,我們對蒙哥馬利算法進

105、行優(yōu)化,并采用將信號廣播流水化的方法,解決長整數(shù)運算結(jié)構(gòu)中關(guān)鍵信號廣播帶來的負載問題。我們采用在信號廣播中插入中間寄存器的方法,設計者在RTL的層次控制扇出節(jié)點的數(shù)量,從而減少扇出,降低關(guān)鍵路徑的延遲,提高時鐘頻率。相對于未優(yōu)化的結(jié)構(gòu),新設計的時鐘頻率提高100~154%,模乘冪運算速度提高99~153%,而面積的增加僅有5~28%。 在基于脈動陣列的設計中,盡管脈動陣列的結(jié)構(gòu)可以解決進位鏈的傳遞問題,但是,仍然有一部分全局信號需要從控

106、制部件廣播到乘法器的特定位置。我們</p><p>  對極大整數(shù)做因數(shù)分解的難度決定了RSA算法的可靠性。換言之,對一極大整數(shù)做因數(shù)分解愈困難,RSA算法愈可靠。假如有人找到一種快速因數(shù)分解的算法的話,那么用RSA加密的信息的可靠性就肯定會極度下降。但找到這樣的算法的可能性是非常小的。今天只有短的RSA鑰匙才可能被強力方式解破。到2008年為止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長度足夠長

107、,用RSA加密的信息實際上是不能被解破的。但在分布式計算技術(shù)和量子計算機理論日趨成熟的今天,RSA加密安全性受到了挑戰(zhàn)。</p><p><b>  5 其他加密技術(shù)</b></p><p>  本章主要介紹其他的一些加密技術(shù)及其應用,例如數(shù)據(jù)指印MD5碼、橢圓曲線密碼體制ECC、偽隨機數(shù)加密技術(shù)、可變長密鑰塊Blowfish加密技術(shù)等。</p>&l

108、t;p><b>  5.1 MD5</b></p><p>  對MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯(lián)后將生成一個128位散列值。</p><p>  在MD5算法中,首先需要對信息進行填充,使其位長對512求余的結(jié)

109、果等于448。因此,信息的位長(Bits Length)將被擴展至N*512+448,即N*64+56個字節(jié)(Bytes),N為一個非負整數(shù),N可以是零。填充的方法如下,在信息的后面填充一個1和無數(shù)個0,直到滿足上面的條件時才停止用0對信息的填充。然后,在這個結(jié)果后面附加一個以64位二進制表示的填充前信息長度。經(jīng)過這兩步的處理,現(xiàn)在的信息的位長=N*512+448+64=(N+1)*512,即長度恰好是512的整數(shù)倍。這樣做的原因是為滿

110、足后面處理中對信息長度的要求。</p><p>  MD5中有四個32位被稱作鏈接變量(Chaining Variable)的整數(shù)參數(shù),他們分別為:A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476。</p><p>  當設置好這四個鏈接變量后,就開始進入算法的四輪循環(huán)運算。循環(huán)的次數(shù)是信息中512位信息分組的數(shù)目。</p>

111、<p>  將上面四個鏈接變量復制到另外四個變量中:A到a,B到b,C到c,D到d。</p><p>  主循環(huán)有四輪(MD4只有三輪),每輪循環(huán)都很相似。第一輪進行16次操作。每次操作對a、b、c和d中的其中三個作一次非線性函數(shù)運算,然后將所得結(jié)果加上第四個變量,文本的一個子分組和一個常數(shù)。再將所得結(jié)果向左環(huán)移一個不定的數(shù),并加上a、b、c或d中之一。最后用該結(jié)果取代a、b、c或d中之一。<

112、/p><p>  典型應用是對一段信息(Message)產(chǎn)生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多軟件在下載的時候都有一個文件名相同,文件擴展名為.md5的文件,在這個文件中通常只有一行文本,大致結(jié)構(gòu)如:</p><p>  MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461</p&g

113、t;<p>  這就是tanajiya.tar.gz文件的數(shù)字簽名。MD5將整個文件當作一個大文本信息,通過其不可逆的字符串變換算法,產(chǎn)生了這個唯一的MD5信息摘要。為了讓讀者朋友對MD5的應用有個直觀的認識,筆者以一個比方和一個實例來簡要描述一下其工作過程:</p><p>  大家都知道,地球上任何人都有自己獨一無二的指紋,這常常成為公安機關(guān)鑒別罪犯身份最值得信賴的方法;與之類似,MD5就可以為

114、任何文件(不管其大小、格式、數(shù)量)產(chǎn)生一個同樣獨一無二的“數(shù)字指紋”,如果任何人對文件做了任何改動,其MD5值也就是對應的“數(shù)字指紋”都會發(fā)生變化。</p><p>  常常在某些軟件下載站點的某軟件信息中看到其MD5值,它的作用就在于我們可以在下載該軟件后,對下載回來的文件用專門的軟件(如Windows MD5 Check等)做一次MD5校驗,以確保我們獲得的文件與該站點提供的文件為同一文件。利用MD5算法來進

115、行文件校驗的方案被大量應用到軟件下載站、論壇數(shù)據(jù)庫、系統(tǒng)文件安全等方面。</p><p>  5.2 可變長密鑰塊Blowfish加密技術(shù)</p><p>  隨著近些年互聯(lián)網(wǎng)技術(shù)的廣泛應用,如何在開放的傳輸環(huán)境下保護私人信息、如何在公共設施上保護個人隱私成了人們關(guān)心的問題。近些年科學家利用DES、RSA加密法發(fā)展起來了網(wǎng)上數(shù)字簽證系統(tǒng)、WINDOWS NT和UNIX的密碼系統(tǒng)。DES加

溫馨提示

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

評論

0/150

提交評論