版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE目錄引言………….1網(wǎng)絡安全…………………….2加密技術…………………….5MD5工作原理……………….8MD5算法…………………….10結束語…………………13致謝……………………14參考文獻………………15附錄源代碼……….16PAGE2WEB上用戶口令安全傳輸?shù)难芯颗c實現(xiàn)摘要:主要闡述利用MD5加密算法來保證WEB上用戶口令的安全傳輸。首先利用MD5對用戶口令進行一次加密,然后再利用MD5對該密文和一個隨機數(shù)組成的信息進行加密,形成網(wǎng)絡上傳輸?shù)挠脩艨诹?,避免用戶口令以明文的形式在WEB上進行傳輸,從而有效地提高認證系統(tǒng)中口令傳輸?shù)陌踩?。關鍵詞:口令;MD5算法;網(wǎng)絡安全ThestudyandimplementationoftheSecureTransferofUser’sPasswordonWEBSchoolofAbstract:Inthispaper,wemainlyexpoundhowtotransferourpasswordinsecurityonWEBbymeansofMD5.Firstly,weencryptthepasswordwithMD5andaddarandomnumbertotheencryptedpasswordtoformanewmessage.ThenencryptthemessagewithMD5againtohaveanewencryptedpasswordthatistobetransferredonWEB.EnhancesthesecurityofauthenticationsystembasedonWEBeffectively.Keywords:password;MD5algorithm;networksecurity第一章引言隨著計算機網(wǎng)絡的發(fā)展,網(wǎng)絡安全問題受到越來越大的關注。網(wǎng)絡安全一直是Internet的一個薄弱環(huán)節(jié),因為當初設計TCP/IP時并沒有考慮網(wǎng)絡的安全機制。如Telnet、Ftp、Email和基于WEB的應用系統(tǒng)等都是明文方式傳輸數(shù)據(jù)包,其中就有用戶的帳號和口令等非常重要的數(shù)據(jù)。而這些數(shù)據(jù)包很容易被人通過特定的軟件或硬件工具截取,通過分析數(shù)據(jù)包的內容,從而可以獲得用戶的帳號和口令,然后進行一些非法的活動。因此,用戶ID和口令的安全傳輸?shù)膯栴}越來越受到人們的關注。Web程序使用一種稱為會話狀態(tài)管理(sessionstatemanagement)的技術來跟蹤瀏覽器與服務器之間的交互,正如超文本傳輸協(xié)議所規(guī)定的那樣,每個瀏覽器的請求都獨立于其他瀏覽器,一個Web程序必須使用一些技巧,如cookie,隱藏的表格字段,或URL重寫,來識別其與特定的瀏覽器的特定的會話。大多數(shù)服務器端開發(fā)環(huán)境如ASP,PHP,ColdFusion等使用cookie。使用會話狀態(tài)管理的問題是從根本上說它是不安全的,一個黑客可以在服務器和用戶瀏覽器之間截取用來管理會話狀態(tài)的cookie,表格字段值,或是URL,一旦得手,他就可以利用這些信息來接管用戶的會話。大多數(shù)服務器端的腳本開發(fā)環(huán)境允許你減少這種危險,例如你可以指定cookie的極短失效時間,使用難預測的會話狀態(tài)信息。然而最安全的還是使用安全套接層(SSL),購買它后,你就可以不僅保護用戶口令,還可以保護會話狀態(tài)管理信息。如果你不使用SSL,讓用戶在你的程序中的安全敏感頁面中每次都重新認證是個好主意,但是從用戶角度出發(fā),這實在是太麻煩了。最后,你必須考慮你和你的用戶究竟愿意承擔多大的風險。如果密碼口令被曝光的危險很高,還是用SSL來構建你的程序吧,如果你不能使用SSL,那么就使用基于MD5的登陸過程。這至少能保護你的用戶的口令。此外,選擇一種允許保護會話狀態(tài)信息的服務器端腳本技術。通常,當用戶不使用SSL(即普通HTTP)登陸時,他(她)的口令從離開瀏覽器起至到達服務器為止始終是以明文狀態(tài)暴露的。然而,利用一種稱為單向函數(shù)的數(shù)學函數(shù)的幫助,我們可以設計一種并不暴露用戶口令的登陸計劃。一個函數(shù)是一種將集合A的元素映射到集合B的方法,每個集合A中的元素都對應于集合B中的一個確定元素。而一個單向函數(shù)的作用就是使逆向的推算非常困難,即,給定集合B的一個元素,很難從集合A中決定哪個元素(如果存在的話)是映射到B集合中的這個元素的。用戶試圖登陸到一個Web應用程序時,服務器端腳本提供用戶一個包含有從數(shù)十億可能值中產(chǎn)生的隨機數(shù)的表格,當用戶在此登陸表格中輸入她們的ID和口令,客戶端的腳本將這個隨機數(shù)值添加到口令后并加以MD5單向運算。通過MD5算法對用戶口令進行加密,可以有效提高用戶口令在WEB上傳輸?shù)陌踩?。第二章網(wǎng)絡安全2.1網(wǎng)絡安全原則最初的計算機應用程序通常沒有或很少安全性,這種情況一直持續(xù)了多年,知道人們真正認識到數(shù)據(jù)的重要性之前,人們雖然知道計算機數(shù)據(jù)有用,卻沒有加以保護。開發(fā)處理財務和個人數(shù)據(jù)的計算機應用程序時,對安全性產(chǎn)生了前所未有的需求。人們認識到,計算機數(shù)據(jù)是現(xiàn)代生活的重要方面。因此,安全的不同領域開始受到重視。網(wǎng)絡安全原則包括保密性、完整性、鑒別、不可抵賴、訪問控制和可用性等原則。保密性原則要求做到只有發(fā)送人和所有的接收人才能訪問消息內容。如果非法人員能夠訪問消息內容,則破壞了保密性原則。鑒別機制可以建立身份證明,鑒別過程保證正確標識電子消息或文檔來源。消息內容在發(fā)送方發(fā)出后和到達所有接受方之前發(fā)生改變時,就會失去消息的完整性。不可抵賴性是不允許發(fā)送消息者拒絕承認發(fā)送消息。訪問控制原則確定誰能訪問什么。可行性原則指定要隨時向授權方提供資源。2.2網(wǎng)絡面臨的安全威脅計算機網(wǎng)絡上的通信面臨以下的4種威脅:截獲:攻擊者從網(wǎng)絡上竊聽聽人的通信內容。中斷:攻擊者有意中斷他人在網(wǎng)絡上的通信。篡改:攻擊者故意篡改網(wǎng)絡上傳送的報文。偽造:攻擊者偽造信息在網(wǎng)絡上傳送。這些攻擊又分為主動攻擊和被動攻擊。被動攻擊被動攻擊的攻擊者只是竊聽或監(jiān)視數(shù)據(jù)傳輸,即取得中途的信息。這里的被動攻擊者不對數(shù)據(jù)進行任何修改。事實上,這也使被動攻擊很難被發(fā)現(xiàn)。因此,處理被動攻擊的一般方法是防止而不是探測與糾正。圖2.1又把被動攻擊分成兩類,分別是消息內容泄露和通信量分析。被動攻擊(截獲)被動攻擊(截獲)通信量分析通信量分析消息內容泄露圖2.1被動攻擊消息內容泄露很容易理解。當發(fā)送保密電子郵件消息時,我們只希望對方才能訪問,否則消息內容會被別人看到。利用某種安全機制,可以防止消息內容泄露。但是,如果傳遞許多這類消息,則攻擊者可以猜出某種模式的相似性,從而猜出消息內容。主動攻擊與被動攻擊不同的是,主動攻擊以某種方式修改消息內容或生成假消息。這些攻擊很難防止。但是,這時可以發(fā)現(xiàn)和恢復的。這些攻擊包括中斷、修改和偽造。在主動攻擊中,會以某種方式修改消息內容。中斷攻擊又稱為偽裝攻擊。修改攻擊又可以分為重放攻擊和改變消息。偽造會產(chǎn)生拒絕服務。圖2.2顯示了這個分類。主動攻擊偽造(拒絕服務)修改偽造(拒絕服務)修改中斷(偽裝)重放攻擊重放攻擊改變消息攻擊圖2.2主動攻擊2.3口令安全性分析口令攻擊是一個一般性的術語,它描述各種行為,包括任何解密、破譯以及刪除口令的行為,或者任何繞道口令安全機制的其他方法。在計算機的安全行方面,口令攻擊時比較原始的。事實上,口令解密是任何電腦網(wǎng)絡攻擊者新手和解密者首先要學習的內容,這主要是因為口令解密只需要很少的技術和經(jīng)驗。在大多數(shù)情況下,一個脆弱的口令安全機制會危及整個系統(tǒng)的安全。攻擊在開始時只獲得有限次的訪問權,通過攻擊不弱的口令安全機制,所獲得的訪問權迅速擴大。通常情況下,僅僅通過口令的攻擊,攻擊者就可以獲得登錄的訪問權,并且奪得對多個主機的控制權。網(wǎng)絡攻擊者為了獲得目標系統(tǒng)的口令文件,試圖以離線的方式破解口令。他們首先猜一個口令,然后,用于源文件系統(tǒng)中一樣的加密算法來加密此口令,將加密的結果與文件中的加密口令比較,若相同則猜對了。因為很少有用戶使用隨即組合的數(shù)字和字母來做口令,許多用戶使用的口令都可在一個特殊的黑字典中找到。在這種口令攻擊中,入侵者并不窮舉所有的字母數(shù)字的排列組合來猜測口令,而僅僅用網(wǎng)絡攻擊者字典中的單詞來嘗試。網(wǎng)絡攻擊者們已經(jīng)構造了這樣的字典,不僅包括了英語或其他語言中的常見單詞,還包括了網(wǎng)絡攻擊者詞語、拼寫有誤的單詞和一些人名。已有的網(wǎng)絡攻擊字典包括了大約200000多個單詞,用來猜測口令非常成功,而對現(xiàn)代的計算機來說,嘗試所有200000多個單詞是很輕松的事。網(wǎng)絡攻擊者只要獲得一個用戶的口令,尤其是特權用戶的口令,就可以為所欲為了。防范的方法很簡單,只要是自己的口令不在英語字典中,且不可能被別人猜測出就可以了。2.4口令攻擊手段口令安全是保衛(wèi)自己系統(tǒng)安全的第一道防線。人們總是試圖通過猜測合法用戶的口令來獲得沒有授權的訪問。兩個通行的做法,一是從存放了許多常用口令的數(shù)據(jù)庫中選取一些“口令”來嘗試,另一個做法是設法偷走口令文件,然后通過口令翻譯工具來破譯這些加密的口令。通常情況下,網(wǎng)絡攻擊者都喜歡等到一個系統(tǒng)的口令文件。在許多UNIX系統(tǒng)中,要得到口令文件并不是那么容易,因為口令文件只有超級用戶可以讀寫。因此,口令文件如果能夠被盜走,在絕大多數(shù)情況下,說明系統(tǒng)的超級用戶的權限,在某種特定情況下,可以被攻擊者直接或者地行使。攻擊者之所以想到的系統(tǒng)存放口令的文件,是因為他們可以從口令文件中,破譯出一些口令來,以便以后能夠以合法的用戶訪問這臺機器。因此,當超級用戶發(fā)現(xiàn)系統(tǒng)中的口令文件被非法訪問過時,一定要更換所有的用戶的口令。當一個攻擊者得到了初始的訪問權時,就會到處查看,尋找系統(tǒng)中的其他安全漏洞,希望得到進一步的特權。因此,使系統(tǒng)安全的第一步便是是那些未被授權的用戶不能進入系統(tǒng)。這就要教育用戶懂得什么事口令安全并遵守安全規(guī)定。防止入侵者讀取口令文件,可以減少他們登錄進入系統(tǒng)的可能性。這需要人們知道的是,取得口令文件并不一定要登錄進系統(tǒng),而沒有登錄進系統(tǒng)照樣可以進行許多攻擊活動??诹罟舻闹饕幸韵聨追N手段。1、社會工程學(SocialEngineering),通過人際交往這一非技術手段以欺騙、套取的方式來獲得口令。避免此類攻擊的對策是加強用戶意識。2、猜測攻擊。首先使用口令猜測程序進行攻擊。口令猜測程序往往根據(jù)用戶定義口令的習慣猜測用戶口令,像名字縮寫、生日、寵物名、部門名等。在詳細了解用戶的社會背景之后,黑客可以列舉出幾百種可能的口令,并在很短的時間內就可以完成猜測攻擊。3、字典攻擊。如果猜測攻擊不成功,入侵者會繼續(xù)擴大攻擊范圍,對所有英文單詞進行嘗試,程序將按序取出一個又一個的單詞,進行一次又一次嘗試,直到成功。據(jù)有的傳媒報導,對于一個有8萬個英文單詞的集合來說,入侵者不到一分半鐘就可試完。所以,如果用戶的口令不太長或是單詞、短語,那么很快就會被破譯出來。4、窮舉攻擊。如果字典攻擊仍然不能夠成功,入侵者會采取窮舉攻擊。一般從長度為1的口令開始,按長度遞增進行嘗試攻擊。由于人們往往偏愛簡單易記的口令,窮舉攻擊的成功率很高。如果每千分之一秒檢查一個口令,那么86%的口令可以在一周內破譯出來。5、混合攻擊,結合了字典攻擊和窮舉攻擊,先字典攻擊,再暴力攻擊。第三章加密技術3.1幾種常見的加密技術加密技術包括兩個元素:算法和密鑰。算法是將普通的文本(或者可以理解的信息)與一串數(shù)字(密鑰)的結合,產(chǎn)生不可理解的密文的步驟,密鑰是用來對數(shù)據(jù)進行編碼和解碼的一種算法。在安全保密中,可通過適當?shù)拿荑€加密技術和管理機制來保證網(wǎng)絡的信息通訊安全。密鑰加密技術的密碼體制分為對稱密鑰體制和非對稱密鑰體制兩種。相應地,對數(shù)據(jù)加密的技術分為兩類,即對稱加密(私人密鑰加密)和非對稱加密(公開密鑰加密)。對稱加密以數(shù)據(jù)加密標準算法為典型代表,非對稱加密通常以RSA(RivestShamirAd1eman)算法為代表。對稱加密的加密密鑰和解密密鑰相同,而非對稱加密的加密密鑰和解密密鑰不同,加密密鑰可以公開而解密密鑰需要保密。1.計算機對稱密鑰加密算法對稱加密(也叫私鑰加密)指加密和解密使用相同密鑰的加密算法。有時又稱為傳統(tǒng)密碼算法,就是加密密鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密密鑰中推算出來。而在大多數(shù)的對稱算法中,加密密鑰和解密密鑰是相同的,所以也稱這種加密算法為秘密密鑰算法或單密鑰算法。它要求發(fā)送方和接收方在安全通信之前,商定一個密鑰。對稱算法的安全性依賴于密鑰,泄漏密鑰就意味著任何人都可以對他們發(fā)送或接收的消息解密,所以密鑰的保密性對通信性至關重要。幾種常見的對稱密鑰加密算法:DES、IDEA、RC5、Blowfish等。以上幾種算法的具體工作原理本文就不作詳細解析了。2.計算機非對稱密鑰加密算法與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。非對稱密鑰加密的工作原理如下:A將這A要給B發(fā)消息時,A用B的公鑰加密信息,因為A知道B的公鑰。A將這個信息發(fā)給B(已經(jīng)用B的公鑰加密信息)B用自己的私鑰解密A的信息。注意,只有B知道自己的私鑰。另外,這個消息只能用B的私鑰解密,而不能用別的密鑰解密。因此,別人都無法看懂這個信息,即使他能夠截獲這個信息。這是因為入侵者不知道B的私鑰,而這個信息只能用B的私鑰解密。幾種常見的非對稱密鑰加密算法:RSA、Elgamal、背包算法、Rabin、D-H、ECC。下面來具體介紹RSA算法。RSA算法基于這樣的數(shù)學事實:兩個大素數(shù)很容易相乘,而得到的積因子則很難。RSA中的私鑰和公鑰基于大素數(shù)(100位以上),算法本身很簡單,但實際難度在于RSA選擇和生成私鑰和公鑰。下面看看如何生成私鑰和公鑰,如何用其進行加密和解密。整個過程如圖3.1所示。選擇兩個選擇兩個大素數(shù)P、Q計算N=P×Q選擇一個公鑰(即加密密鑰)E,使其不是(P-1)與(Q-1)的因子選擇私鑰(即解密密鑰)D,滿足下列條件:(D×E)mod(P-1)×(Q-1)=1加密時,從明文PT計算密文CT如下:CT=PT∧EmodN將密文CT發(fā)送給接收方。解密時,從密文CT計算明文PT如下PT=CT∧DmodN圖3.1RSA算法3.2消息摘要消息摘要也成為散列,是指消息的指印或匯總,類似于縱向冗余校驗和循環(huán)冗余校驗。用于驗證數(shù)據(jù)完整性(即保證信息在發(fā)送之后和接受之前沒有被篡改)。下面舉一個LRC示例。圖3.2顯示了發(fā)送方的LRC計算,縱向冗余校驗將位塊組成列表(行)。例如,如果要發(fā)送32位,則把其排成四行,然后計算每個列(共8列)有多少個1位(如果1位為奇數(shù),則顯示奇性,在陰影LRC行中用一個1位表示;相反,如果1位為偶數(shù),則成為偶性,在陰影LRC行中用一個0位表示)。例如,第一列有兩個1,表示偶性,因此第一列的陰影中LRC行為0;同樣,最后一列有三個1,表示奇性,因此陰影LRC行為1.這樣每列計算奇偶位,生成一個新行,共八個奇偶行,成為整個塊的奇偶位。這樣,LRC實際上市原消息的指印。原始數(shù)據(jù)原始數(shù)據(jù)排列成行LRC原始數(shù)據(jù)和LRC111001001101110100111001001010011110010011011101001110010010100111100100111001001101110100111000100101001001010010010100111100100110111010011100100101001001010011110010011011101001110010010100100101001圖3.2縱向冗余校驗3.3MD5簡介MD5消息摘要算法是RonRivest開發(fā)的。MD5實際上根源于一系列消息摘要算法,都是由RonRivest開發(fā)的。原先的消息摘要算法成為MD,很快進入下一版MD2,是RonRivest的,但很脆弱。因此,RonRivest開始開發(fā)MD3,結果失敗了。后來,RonRivest開發(fā)了MD4,但很快發(fā)現(xiàn)其還是不理想,因此最終推出了MD5.MD5速度很快,產(chǎn)生128位消息摘要。多年來,研究人員發(fā)現(xiàn)了MD5的弱點,但是MD5成功克服了沖突,不過今后情況還很難說。經(jīng)過初試處理后,輸入文本變成512位塊(進一步分為16個32位塊)。這個算法的輸入是四個32位塊構成的集合,形成128位消息摘要。由于MD5算法的可靠性,被廣泛用于雜湊資料正確性驗證。經(jīng)過許多程序員的努力,MD5算法已經(jīng)被各種語言實現(xiàn),.asp,.php,.java,c,c#,vb,vc++,delphi等語言。MD5算法以16個32位子分組即512位分組來提供數(shù)據(jù)雜湊,經(jīng)過程序流程,生成四個32位數(shù)據(jù),最后聯(lián)合起來成為一個128位散列。基本方式為,求余、取余、調整長度、與鏈接變量進行循環(huán)運算。得出結果。MD5由MD4、MD3、MD2改進而來,主要是增加了算法難度和不可逆性。用戶的口令在WEB在進行傳輸?shù)臅r候,可以利用MD5算法對口令進行加密,這樣就可以避免了口令明文在WEB傳輸,從而保證用戶口令的安全性。下面來介紹MD5算法及其工作原理。第四章MD5工作原理第一步:填充MD5的第一步是在原消息中增加填充位,目的是使原消息長度等于一個值,即比512的倍數(shù)少64位。例如,如果原消息長度為1000位,則要填充472位,使消息長度為1472位,因為64+1427=1536,是512的倍數(shù)。第二步:添加長度增加填充為位后,下一步要計算消息原長,將其加進填充后的消息末尾。第三步:將輸入分成512位的塊計算原始消息的長度(除去填充部分),并附加到消息與填充位的后面。該長度用64位表示。如果該消息的長度超過64位,那么就只使用后64位。添加完成后,它就是最終的消息了。第四步:初始化鏈接變量第四步要初始化四個鏈接變量,分別稱為A,B,C,D,都是32位的數(shù)字。這些鏈接變量的初始十六進制值如下表4-1所示。表4-1鏈接變量A十六進制01234567B十六進制89ABCDEFC十六進制FEDCBA98D十六進制76543210第五步:處理塊初始化之后,就要開始實際算法了。5.1步:將四個鏈接變量復制到四個變量a,b,c,d中,使a=A,b=B,c=C,d=D,如圖4.2所示。AABCDabcd圖4.2將四個鏈接變量復制到四個變量中去5.2步:將當前512位塊分解成16個子塊,每個子塊32位,如圖4.3所示。。。。……32位32位。。。32位塊1(512位)子塊1子塊2子塊16圖4.3將當前512位分解為16個子塊5.3步:這時有四輪,每一輪處理一個塊中的16個子塊。每一輪的鍵入如下:(a)16個子塊;(b)變量a、b、c、d;(c)常量t,如圖4.4所示。16個子塊16個子塊16個子塊一輪abcd圖4.4每一輪處理每一輪有16個輸入子塊M[0],M[1],...,M[15],或表示位M[i],其中i為1~25。我們知道,每個子塊位32位t是一個常量數(shù)組,包含64個元素,每個元素為32位。我們把數(shù)組t的元素表示為t[1],t[2],…,t[64],或t[k],其中k為1~64。由于有四輪,因此每一輪用64位個t只中的16個。第五章MD5算法對MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯(lián)后將生成一個128位散列值。在MD5算法中,首先需要對信息進行填充,使其字節(jié)長度對512求余的結果等于448。因此,信息的字節(jié)長度(BitsLength)將被擴展至N*512+448,即N*64+56個字節(jié)(Bytes),N為一個正整數(shù)。填充的方法如下,在信息的后面填充一個1和無數(shù)個0,直到滿足上面的條件時才停止用0對信息的填充。然后,在在這個結果后面附加一個以64位二進制表示的填充前信息長度。經(jīng)過這兩步的處理,現(xiàn)在的信息字節(jié)長度=N*512+448+64=(N+1)*512,即長度恰好是512的整數(shù)倍。這樣做的原因是為滿足后面處理中對信息長度的要求。MD5中有四個32位被稱作鏈接變量(ChainingVariable)的整數(shù)參數(shù),他們分別為:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。當設置好這四個鏈接變量后,就開始進入算法的四輪循環(huán)運算。循環(huán)的次數(shù)是信息中512位信息分組的數(shù)目將上面四個鏈接變量復制到另外四個變量中:A到a,B到b,C到c,D到d。主循環(huán)有四輪(MD4只有三輪),每輪循環(huán)都很相似。第一輪進行16次操作。每次操作對a、b、c和d中的其中三個作一次非線性函數(shù)運算,然后將所得結果加上第四個變量,文本的一個子分組和一個常數(shù)。再將所得結果向右環(huán)移一個不定的數(shù),并加上a、b、c或d中之一。最后用該結果取代a、b、c或d中之一。
以一下是每次操作中用到的四個非線性函數(shù)(每輪一個)。F(X,Y,Z)=(X&Y)|((~X)&Z)G(X,Y,Z)=(X&Z)|(Y&(~Z))H(X,Y,Z)=X^Y^ZI(X,Y,Z)=Y^(X|(~Z))(&是與,|是或,~是非,^是異或)這四個函數(shù)的說明:如果X、Y和Z的對應位是獨立和均勻的,那么結果的每一位也應是獨立和均勻的。F是一個逐位運算的函數(shù)。即,如果X,那么Y,否則Z。函數(shù)H是逐位奇偶操作符。假設Mj表示消息的第j個子分組(從0到15),<<FF(a,b,c,d,Mj,s,ti)表示a=b+((a+(F(b,c,d)+Mj+ti)<<GG(a,b,c,d,Mj,s,ti)表示a=b+((a+(G(b,c,d)+Mj+ti)<<HH(a,b,c,d,Mj,s,ti)表示a=b+((a+(H(b,c,d)+Mj+ti)<<II(a,b,c,d,Mj,s,ti)表示a=b+((a+(I(b,c,d)+Mj+ti)<<這四輪(64步)是:第一輪FF(a,b,c,d,M0,7,0xd76aa478)FF(d,a,b,c,M1,12,0xe8c7b756)FF(c,d,a,b,M2,17,0x242070db)FF(b,c,d,a,M3,22,0xc1bdceee)FF(a,b,c,d,M4,7,0xf57c0faf)FF(d,a,b,c,M5,12,0x4787c62a)FF(c,d,a,b,M6,17,0xa8304613)FF(b,c,d,a,M7,22,0xfd469501)
FF(a,b,c,d,M8,7,0x698098d8)FF(d,a,b,c,M9,12,0x8b44f7af)FF(c,d,a,b,M10,17,0xffff5bb1)FF(b,c,d,a,M11,22,0x895cd7be)FF(a,b,c,d,M12,7,0x6b901122)FF(d,a,b,c,M13,12,0xfd987193)FF(c,d,a,b,M14,17,0xa679438e)FF(b,c,d,a,M15,22,0x49b40821)第二輪GG(a,b,c,d,M1,5,0xf61e2562)GG(d,a,b,c,M6,9,0xc040b340)GG(c,d,a,b,M11,14,0x265e5a51)GG(b,c,d,a,M0,20,0xe9b6c7aa)GG(a,b,c,d,M5,5,0xd62f105d)GG(d,a,b,c,M10,9,0x02441453)GG(c,d,a,b,M15,14,0xd8a1e681)GG(b,c,d,a,M4,20,0xe7d3fbc8)GG(a,b,c,d,M9,5,0x21e1cde6)GG(d,a,b,c,M14,9,0xc33707d6)GG(c,d,a,b,M3,14,0xf4d50d87)GG(b,c,d,a,M8,20,0x455a14ed)GG(a,b,c,d,M13,5,0xa9e3e905)GG(d,a,b,c,M2,9,0xfcefa3f8)GG(c,d,a,b,M7,14,0x676f02d9)GG(b,c,d,a,M12,20,0x8d2a4c第三輪HH(a,b,c,d,M5,4,0xfffa3942)HH(d,a,b,c,M8,11,0x8771f681)HH(c,d,a,b,M11,16,0x6d9d6122)HH(b,c,d,a,M14,23,0xfde5380c)HH(a,b,c,d,M1,4,0xa4beea44)HH(d,a,b,c,M4,11,0x4bdecfa9)HH(c,d,a,b,M7,16,0xf6bb4b60)HH(b,c,d,a,M10,23,0xbebfbc70)HH(a,b,c,d,M13,4,0x289b7ec6)HH(d,a,b,c,M0,11,0xeaa127fa)HH(c,d,a,b,M3,16,0xd4ef3085)HH(b,c,d,a,M6,23,0x04881d05)HH(a,b,c,d,M9,4,0xd9d4d039)HH(d,a,b,c,M12,11,0xe6db99e5)HH(c,d,a,b,M15,16,0x1fa27cf8)HH(b,c,d,a,M2,23,0xc4ac5665)第四輪II(a,b,c,d,M0,6,0xf4292244)II(d,a,b,c,M7,10,0x432aff97)II(c,d,a,b,M14,15,0xab9423a7)II(b,c,d,a,M5,21,0xfc93a039)II(a,b,c,d,M12,6,0x655b59c3)II(d,a,b,c,M3,10,0x8f0ccc92)II(c,d,a,b,M10,15,0xffeff47d)II(b,c,d,a,M1,21,0x85845dd1)II(a,b,c,d,M8,6,0x6fa87e4f)II(d,a,b,c,M15,10,0xfe2ce6e0)II(c,d,a,b,M6,15,0xa3014314)II(b,c,d,a,M13,21,0x4e0811a1)II(a,b,c,d,M4,6,0xf7537e82)II(d,a,b,c,M11,10,0xbd3af235)II(c,d,a,b,M2,15,0x2ad7d2bb)II(b,c,d,a,M9,21,0xeb86d391)常數(shù)ti可以如下選擇:在第i步中,ti是4294967296*abs(sin(i))的整數(shù)部分,i的單位是弧度。(4294967296等于2的32次方)所有這些完成之后,將A、B、C、D分別加上a、b、c、d。然后用下一分組數(shù)據(jù)繼續(xù)運行算法,最后的輸出是A、B、C和D的級聯(lián)。結束語Internet的迅速增長帶來了無窮的計算機會,但是同時也帶來了全新的問題和擔心,特別是信息交換的安全性。利用WEB密碼安全傳輸只是網(wǎng)絡安全的措施之一。如今,新的信息威脅與攻擊不斷出現(xiàn)。在技術人員找到針對這些攻擊的保護方法的同時,而攻擊者則在不斷尋找新的攻擊辦法。這種情況必將繼續(xù)下去。因此,網(wǎng)絡安全的道路任重而道遠。致謝本文是在董尼老師的悉心指導下完成的。從畢業(yè)設計題目的選擇、到選到課題的研究和論證,再到本畢業(yè)設計的編寫、修改,每一步都有董尼老師的細心指導和認真的解析。在董老師的指導下,我在各方面都有所提高,老師以嚴謹求實,一絲不茍的治學態(tài)度和勤勉的工作態(tài)度深深感染了我,給我巨大的啟迪,鼓舞和鞭策,并成為我人生路上值得學習的榜樣。使我的知識層次又有所提高。同時感謝所有教育過我的專業(yè)老師,你們傳授的專業(yè)知識是我不斷成長的源泉也是完成本論文的基礎。也感謝我同一組的組員和班里的同學是你們在我遇到難題是幫我找到大量資料,解決難題。再次真誠感謝所有幫助過我的老師同學。通過這次畢業(yè)設計不僅提高了我獨立思考問題解決問題的能力而且培養(yǎng)了認真嚴謹,一絲不茍的學習態(tài)度。由于經(jīng)驗匱乏,能力有限,設計中難免有許多考慮不周全的地方,希望各位老師多加指教。參考文獻[1]邱仲潘等.密碼學與網(wǎng)絡安全.清華大學出版社[2]李澤林,蘇淑靖.安全技術.國防工業(yè)出版社[3]胡建偉,馬建峰.網(wǎng)絡安全與保密.西安電子科技大學出版社[4]謝希仁.計算機網(wǎng)絡(第五版).電子工業(yè)出版社[5]許曉東,荊繼武,阮耀平.一種混合密碼體制的認證協(xié)議及分析.計算機工程[6]馮登國,斐定.密碼學引導.北京:科學出版社[7]劉成勇,劉明剛,王明舉.Internet防火墻與網(wǎng)絡安全.北京:機械工業(yè)出版社附錄源代碼利用JavaScript和ASP來實現(xiàn)WEB上的用戶口令的加密傳輸,首先JavaScript腳本編寫MD5函數(shù),實現(xiàn)MD5加密算法。在服務器端利用ASP的腳本產(chǎn)生一隨機數(shù)供客戶端使用。代碼:/**md5.jvs1.0b27/06/96**JavascriptimplementationoftheRSADataSecurity,Inc.MD5*Message-DigestAlgorithm.**Copyright(c)1996HenriTorgemane.AllRightsReserved.**Permissiontouse,copy,modify,anddistributethissoftware*anditsdocumentationforanypurposesandwithout*feeisherebygrantedprovidedthatthiscopyrightnotice*appearsinallcopies.**Ofcourse,thissoftisprovided"asis"withoutexpressorimplied*warrantyofanykind.**$Id:md5.js,v2000/04/1716:40:07kkExp$**/functionarray(n){for(i=0;i<n;i++)this<i>=0;this.length=n;}/*Somebasiclogicalfunctionshadtoberewrittenbecauseofabugin*Javascript..Justtrytocompute0xffffffff>>4withit..*Ofcourse,thesefunctionsareslowerthantheoriginalwouldbe,but*atleast,theywork!*/functioninteger(n){returnn%(0xffffffff+1);}functionshr(a,b){a=integer(a);b=integer(b);if(a-0x80000000>=0){a=a%0x80000000;a>>=b;a+=0x40000000>>(b-1);}elsea>>=b;returna;}functionshl1(a){a=a%0x80000000;if(a&0x40000000==0x40000000){a-=0x40000000;a*=2;a+=0x80000000;}elsea*=2;returna;}
functionshl(a,b){a=integer(a);b=integer(b);for(vari=0;i<b;i++)a=shl1(a);returna;}functionand(a,b){a=integer(a);b=integer(b);vart1=(a-0x80000000);vart2=(b-0x80000000);if(t1>=0)if(t2>=0)eturn((t1&t2)+0x80000000);elsereturn(t1&b);elseif(t2>=0)return(a&t2);elsereturn(a&b);}functionor(a,b){a=integer(a);b=integer(b);vart1=(a-0x80000000);vart2=(b-0x80000000);if(t1>=0)if(t2>=0)return((t1|t2)+0x80000000);elsereturn((t1|b)+0x80000000);elseif(t2>=0)return((a|t2)+0x80000000);elsereturn(a|b);}functionxor(a,b){a=integer(a);b=integer(b);vart1=(a-0x80000000);vart2=(b-0x80000000);if(t1>=0)if(t2>=0)return(t1^t2);elsereturn((t1^b)+0x80000000);elseif(t2>=0)return((a^t2)+0x80000000);elsereturn(a^b);}functionnot(a){a=integer(a);return(0xffffffff-a);}/*Herebegintherealalgorithm*/varstate=newarray(4);varcount=newarray(2);count[0]=0;count[1]=0;varbuffer=newarray(64);vartransformBuffer=newarray(16);vardigestBits=newarray(16);varS11=7;varS12=12;varS13=17;varS14=22;varS21=5;varS22=9;varS23=14;varS24=20;varS31=4;varS32=11;varS33=16;varS34=23;varS41=6;varS42=10;varS43=15;varS44=21;functionF(x,y,z){returnor(and(x,y),and(not(x),z));}functionG(x,y,z){returnor(and(x,z),and(y,not(z)));}functionH(x,y,z){returnxor(xor(x,y),z);}functionI(x,y,z){returnxor(y,or(x,not(z)));}functionrotateLeft(a,n){returnor(shl(a,n),(shr(a,(32-n))));}functionFF(a,b,c,d,x,s,ac){a=a+F(b,c,d)+x+ac;a=rotateLeft(a,s);a=a+b;returna;}unctionGG(a,b,c,d,x,s,ac){a=a+G(b,c,d)+x+ac;a=rotateLeft(a,s);a=a+b;returna;}functionHH(a,b,c,d,x,s,ac){a=a+H(b,c,d)+x+ac;a=rotateLeft(a,s);a=a+b;returna;}functionII(a,b,c,d,x,s,ac){a=a+I(b,c,d)+x+ac;a=rotateLeft(a,s);a=a+b;returna;}functiontransform(buf,offset){vara=0,b=0,c=0,d=0;arx=transformBuffer;a=state[0];b=state[1];c=state[2];d=state[3];for(i=0;i<16;i++){x<i>=and(buf[i*4+offset],0xff);for(j=1;j<4;j++){x<i>+=shl(and(buf[i*4+j+offset],0xff),j*8);}}/*Round1*/a=FF(a,b,c,d,x[0],S11,0xd76aa478);/*1*/d=FF(d,a,b,c,x[1],S12,0xe8c7b756);/*2*/c=FF(c,d,a,b,x[2],S13,0x242070db);/*3*/b=FF(b,c,d,a,x[3],S14,0xc1bdceee);/*4*/a=FF(a,b,c,d,x[4],S11,0xf57c0faf);/*5*/d=FF(d,a,b,c,x[5],S12,0x4787c62a);/*6*/c=FF(c,d,a,b,x[6],S13,0xa8304613);/*7*/b=FF(b,c,d,a,x[7],S14,0xfd469501);/*8*/a=FF(a,b,c,d,x[8],S11,0x698098d8);/*9*/d=FF(d,a,b,c,x[9],S12,0x8b44f7af);/*10*/c=FF(c,d,a,b,x[10],S13,0xffff5bb1);/*11*/b=FF(b,c,d,a,x[11],S14,0x895cd7be);/*12*/a=FF(a,b,c,d,x[12],S11,0x6b901122);/*13*/d=FF(d,a,b,c,x[13],S12,0xfd987193);/*14*/c=FF(c,d,a,b,x[14],S13,0xa679438e);/*15*/b=FF(b,c,d,a,x[15],S14,0x49b40821);/*16*//*Round2*/a=GG(a,b,c,d,x[1],S21,0xf61e2562);/*17*/d=GG(d,a,b,c,x[6],S22,0xc040b340);/*18*/c=GG(c,d,a,b,x[11],S23,0x265e5a51);/*19*/b=GG(b,c,d,a,x[0],S24,0xe9b6c7aa);/*20*/a=GG(a,b,c,d,x[5],S21,0xd62f105d);/*21*/d=GG(d,a,b,c,x[10],S22,0x2441453);/*22*/c=GG(c,d,a,b,x[15],S23,0xd8a1e681);/*23*/b=GG(b,c,d,a,x[4],S24,0xe7d3fbc8);/*24*/a=GG(a,b,c,d,x[9],S21,0x21e1cde6);/*25*/d=GG(d,a,b,c,x[14],S22,0xc33707d6);/*26*/c=GG(c,d,a,b,x[3],S23,0xf4d50d87);/*27*/b=GG(b,c,d,a,x[8],S24,0x455a14ed);/*28*/a=GG(a,b,c,d,x[13],S21,0xa9e3e905);/*29*/d=GG(d,a,b,c,x[2],S22,0xfcefa3f8);/*30*/c=GG(c,d,a,b,x[7],S23,0x676f02d9);/*31*/b=GG(b,c,d,a,x[12],S24,0x8d2a4c/*Round3*/
a=HH(a,b,c,d,x[5],S31,0xfffa3942);/*33*/d=HH(d,a,b,c,x[8],S32,0x8771f681);/*34*/c=HH(c,d,a,b,x[11],S33,0x6d9d6122);/*35*/b=HH(b,c,d,a,x[14],S34,0xfde5380c);/*36*/a=HH(a,b,c,d,x[1],S31,0xa4beea44);/*37*/d=HH(d,a,b,c,x[4],S32,0x4bdecfa9);/*38*/c=HH(c,d,a,b,x[7],S33,0xf6bb4b60);/*39*/b=HH(b,c,d,a,x[10],S34,0xbebfbc70);/*40*/a=HH(a,b,c,d,x[13],S31,0x289b7ec6);/*41*/d=HH(d,a,b,c,x[0],S32,0xeaa127fa);/*42*/c=HH(c,d,a,b,x[3],S33,0xd4ef3085);/*43*/b=HH(b,c,d,a,x[6],S34,0x4881d05);/*44*/a=HH(a,b,c,d,x[9],S31,0xd9d4d039);/*45*/d=HH(d,a,b,c,x[12],S32,0xe6db99e5);/*46*/c=HH(c,d,a,b,x[15],S33,0x1fa27cf8);/*47*/b=HH(b,c,d,a,x[2],S34,0xc4ac5665);/*48*//*Round4*/a=II(a,b,c,d,x[0],S41,0xf4292244);/*49*/d=II(d,a,b,c,x[7],S42,0x432aff97);/*50*/c=II(c,d,a,b,x[14],S43,0xab9423a7);/*51*/b=II(b,c,d,a,x[5],S44,0xfc93a039);/*52*/a=II(a,b,c,d,x[12],S41,0x655b59c3);/*53*/d=II(d,a,b,c,x[3],S42,0x8f0ccc92);/*54*/c=II(c,d,a,b,x[10],S43,0xffeff47d);/*55*/b=II(b,c,d,a,x[1],S44,0x85845dd1);/*56*/a=II(a,b,c,d,x[8],S41,0x6fa87e4f);/*57*/d=II(d,a,b,c,x[15],S42,0xfe2ce6e0);/*58*/c=II(c,d,a,b,x[6],S43,0xa3014314);/*59*/b=II(b,c,d,a,x[13],S44,0x4e0811a1);/*60*/a=II(a,b,c,d,x[4],S41,0xf7537e82);/*61*/d=II(d,a,b,c,x[11],S42,0xbd3af235);/*62*/c=II(c,d,a,b,x[2],S43,0x2ad7d2bb);/*63*/b=II(b,c,d,a,x[9],S44,0xeb86d391);/*64*/state[0]+=a;state[1]+=b;state[2]+=c;state[3]+=d;}functioninit(){count[0]=count[1]=0;state[0]=0x67452301;state[1]=0xefcdab89;state[2]=0x98badcfe;state[3]=0x10325476;for(i=0;i<digestBits.length;i++)digestBits<i>=0;}functionupdate(b){varindex,i;index=and(shr(count[0],3),0x3f);if(count[0]<0xffffffff-7)count[0]+=8;else{count[1]++;count[0]-=0xffffff
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024私人承包城市地下管網(wǎng)改造工程合同范本3篇
- 二零二五年度VIP會員專享法律服務合同
- 二零二五年度應收賬款保理合同到期續(xù)簽規(guī)范3篇
- 標磚購銷合同范本帶詳盡條款
- 二零二五年度智能家居產(chǎn)品銷售代理協(xié)議范本3篇
- 食品加工企業(yè)供應鏈優(yōu)化合作協(xié)議
- 二零二五年度學校體育設施修繕與更新合同3篇
- 二零二五年度天然氣儲備及調峰供氣合同模板3篇
- 二零二五年度物流行業(yè)共享用工協(xié)議范本3篇
- 2024版建筑項目包工承攬協(xié)議要點版B版
- 2024年新奧集團股份有限公司招聘筆試參考題庫含答案解析
- 觸發(fā)點療法:精準解決身體疼痛的肌筋膜按壓療法
- 工作述職評分表
- 新疆大學新疆數(shù)字經(jīng)濟研究院:2023新疆平臺經(jīng)濟發(fā)展調研報告
- 酒店預訂確認函
- 小學課愛國主義教育教案
- 會計師事務所審計工作底稿
- 內科抗菌藥物合理使用優(yōu)秀課件
- 觸摸一體機整機檢驗標準?1.0
- 關于人員的處置方案
- 2023年社區(qū)體育研究報告5篇
評論
0/150
提交評論