VC+ MD5算法的研究與實(shí)現(xiàn)-數(shù)據(jù)存儲(chǔ)加密_第1頁(yè)
VC+ MD5算法的研究與實(shí)現(xiàn)-數(shù)據(jù)存儲(chǔ)加密_第2頁(yè)
VC+ MD5算法的研究與實(shí)現(xiàn)-數(shù)據(jù)存儲(chǔ)加密_第3頁(yè)
VC+ MD5算法的研究與實(shí)現(xiàn)-數(shù)據(jù)存儲(chǔ)加密_第4頁(yè)
VC+ MD5算法的研究與實(shí)現(xiàn)-數(shù)據(jù)存儲(chǔ)加密_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、分類號(hào):分類號(hào):TP301.6TP301.6 U U D D C C:D10621-408-(2007)D10621-408-(2007)62156215-0-0 密密 級(jí):公級(jí):公 開開 編編 號(hào):號(hào): 成成 都都 信信 息息 工工 程程 學(xué)學(xué) 院院 學(xué)學(xué) 位位 論論 文文 MD5MD5 算法的研究與實(shí)現(xiàn)算法的研究與實(shí)現(xiàn) -數(shù)據(jù)存儲(chǔ)加密數(shù)據(jù)存儲(chǔ)加密 論文作者姓名:論文作者姓名:羅羅 丹丹 申請(qǐng)學(xué)位專業(yè):申請(qǐng)學(xué)位專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī)科學(xué)與技術(shù) 申請(qǐng)學(xué)位類別:申請(qǐng)學(xué)位類別:工科學(xué)士工科學(xué)士 指指導(dǎo)導(dǎo)教教師師姓姓名名(職職稱稱) :李貴洋李貴洋( (講師講師) ) 論文提交日期:論文提交日

2、期:20072007 年年 6 6 月月 1 1 日日 MD5MD5 算法的研究與實(shí)現(xiàn)算法的研究與實(shí)現(xiàn) -數(shù)據(jù)存儲(chǔ)加密數(shù)據(jù)存儲(chǔ)加密 摘摘 要要 隨著網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用,網(wǎng)絡(luò)信息安全越來越引起人們的重視。針對(duì)數(shù) 據(jù)在存儲(chǔ)的時(shí)候存在大量的安全問題,目前通常將需要存儲(chǔ)的數(shù)據(jù)進(jìn)行加密然 后再存儲(chǔ),應(yīng)用 MD5 算法是一個(gè)不錯(cuò)的選擇。MD5 算法的全稱是 Message- Digest algorithm 5,是一種用于產(chǎn)生數(shù)字簽名的單項(xiàng)散列算法。它的作用是 讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被“壓縮”成一種保密的格式, 即將一個(gè)任意長(zhǎng)度的“字節(jié)串”通過一個(gè)不可逆的字符串變換算法變換成一個(gè) 12

3、8bit 的串。 該畢業(yè)設(shè)計(jì)是運(yùn)用 microsoft visual c+ 6.0 軟件而開發(fā)的,主要是通過 算法實(shí)現(xiàn)數(shù)據(jù)的加密存儲(chǔ)。文章分成五部分。第一,二部分描述了 MD5 的目前 現(xiàn)狀和相關(guān)理論知識(shí),也讓我們了解 MD5 的定義。重點(diǎn)是 MD5 的流程實(shí)現(xiàn)和封 裝 DLL。在 MD5 算法的 DLL 封裝這章,主要是描述我們?yōu)槭裁匆x用封裝 DLL 的原因,以及封裝的好處。設(shè)計(jì)流程這一部分里包含讀取,修改,插入,刪除 這幾個(gè)功能的實(shí)現(xiàn)情況,并用流程圖的方式來分別描述了這四大功能模塊的實(shí) 現(xiàn)過程。最后一部分顯示了系統(tǒng)測(cè)試的內(nèi)容和系統(tǒng)主要功能運(yùn)行界面圖。 關(guān)鍵詞:關(guān)鍵詞:信息安全;MD5;加

4、密;封裝 The Research and Implementation for MD5 Algorithm - Data Storage and Encryption Abstract With the wide application of the network technology, the information of the network safety causes peoples attention more and more. A large number of security questions appear while storing data, the data th

5、at usually store needing at present are encrypted then stored, it is a good choice to use MD5 algorithm. The full name of MD5 algorithm is Message-Digest algorithm 5, is that a kind of individual event used for producing figures and signed breaks up and arranges algorithms. Its function is to let la

6、rge capacity information compress and become a kind of secret form before signing the private key with the digital signature software, vary byte bunch of a wanton length into a great integer of one 128bit through an irreversible one bunch of algorithms of varying of character . Used Microsoft Visual

7、 C+ 6.0 software and developed in this graduation project, is mainly to realize through the algorithm that the encryption of the data is stored. The article is divided into five parts. The first and second parts are describing the current situation and relevant theory knowledge at present of MD5, le

8、t us understand the definition of MD5. The focal point is the procedure of MD5 is realized and encapsulation to Dynamic Link Library. In this chapter of encapsulation MD5 class library to Dynamic Link Library, mainly describe why we will select encapsulation Dynamic Link Library for use , and the ad

9、vantage of encapsulation . Design this of procedure and include reading in the part , revise , insert, delete the realization situations of these functions, and has described the realization course of this four major functions module respectively in way of the flow chart . The last part has shown th

10、at the content of system testing and main function of system operate the interface picture . Key words: information security; MD5; encrypt; Packaging 目目 錄錄 論文總頁(yè)數(shù):23 頁(yè) 1引言.1 1.1研究現(xiàn)狀.1 1.2選題意義.2 1.3選題背景.2 2相關(guān)理論基礎(chǔ).3 2.1單向散列函數(shù).3 2.1.1單向散列函數(shù)的基本原理 .3 2.1.2散列值的長(zhǎng)度 .4 2.2MD5 算法的基本原理 .4 2.3MD5 的應(yīng)用 .12 3需求分析及設(shè)

11、計(jì)方案.14 3.1主要功能模塊.14 3.1.1數(shù)據(jù)加密 .14 3.1.2數(shù)據(jù)存儲(chǔ) .14 3.1.3數(shù)據(jù)庫(kù)設(shè)計(jì) .14 3.2主要流程圖.15 4MD5 算法的 DLL 封裝 .15 4.1加載時(shí)動(dòng)態(tài)鏈接.16 4.2運(yùn)行時(shí)動(dòng)態(tài)鏈接.16 4.3DLL 封裝情況 .16 5具體設(shè)計(jì)流程及實(shí)現(xiàn).17 5.1讀取的設(shè)計(jì)和實(shí)現(xiàn).17 5.2插入的設(shè)計(jì)和實(shí)現(xiàn).18 5.3修改的設(shè)計(jì)和實(shí)現(xiàn).18 5.4刪除的設(shè)計(jì)和實(shí)現(xiàn).19 6調(diào)試與分析.19 6.1概述.19 6.2測(cè)試分析報(bào)告.20 結(jié) 論.20 參考文獻(xiàn).21 致 謝.22 聲 明.23 1 1 引言引言 隨著網(wǎng)絡(luò)通信技術(shù)和 Interne

12、t 的聯(lián)系日益增強(qiáng),出現(xiàn)了一系列與網(wǎng)絡(luò)安全 相關(guān)的問題:如對(duì)主機(jī)的攻擊,網(wǎng)絡(luò)上傳輸?shù)男畔⒈唤厝?、篡改、重發(fā)等,由 此,它對(duì)網(wǎng)絡(luò)應(yīng)用的進(jìn)一步推廣構(gòu)成了巨大威脅,因此密碼體制1就在這種背 景下應(yīng)運(yùn)而生了。存儲(chǔ)加密涉及大量文件、資料、新建等文檔處理,需要高效, 可靠的進(jìn)行各種信息交換,同時(shí)對(duì)信息流轉(zhuǎn)的整個(gè)過程需要有效的組織和監(jiān)控。 對(duì)數(shù)據(jù)的安全存儲(chǔ)和安全傳輸具有較高的要求。數(shù)據(jù)加密技術(shù)不僅具有保證信 息機(jī)密性的信息加密功能,而且具有數(shù)字簽名、秘密分存、系統(tǒng)安全等性能。 因而可以保障信息的機(jī)密性、完整性和準(zhǔn)確性,防止信息被篡改、偽造和假冒 2。雖然目前已有很多加密技術(shù)應(yīng)用于各個(gè)領(lǐng)域,但是存在加密強(qiáng)度、

13、運(yùn)算量 大等缺陷,因而本文提出了一種新的加密機(jī)制MD5加密。 同時(shí),在競(jìng)爭(zhēng)日趨激烈的今天,只有實(shí)行對(duì)數(shù)據(jù)加密的加強(qiáng)管理,建設(shè)性提 高信息安全在網(wǎng)絡(luò)中的地位,以至在競(jìng)爭(zhēng)中求生存,以期更好地發(fā)展下去。 1.11.1研究現(xiàn)狀研究現(xiàn)狀 MD5 的全稱3是 Message-Digest algorithm 5(信息-摘要算法),MD5 是 一種不可逆的算法,即對(duì)生成的密文求逆,對(duì)應(yīng)著無(wú)窮多個(gè)逆。在 90 年代初由 MIT Laboratory for Computer Science(IT 計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室)和 RSA Data Security Inc(RSA 數(shù)據(jù)安全公司)的 Ronald L.Ri

14、vest 開發(fā)出來,經(jīng) MD2,MD3 和 MD4 發(fā)展而來。它的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前 被“壓縮”成一種保密的格式(把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的大整數(shù))。 不管是 MD2,MD4 還是 MD5,它們都需要獲得一個(gè)隨機(jī)長(zhǎng)度的信息,并產(chǎn)生一個(gè) 128 位的信息摘要。雖然這些算法的結(jié)構(gòu)或多或少有些相似,但是 MD2 的設(shè)計(jì) 與 MD4 和 MD5 完全不同,是因?yàn)?MD2 是為 8 位機(jī)器做過設(shè)計(jì)優(yōu)化的,而 MD4 和 MD5 卻是面向 32 位的電腦。Rivest 在 1989 年開發(fā)出 MD2 算法,在這個(gè)算法中, 首先對(duì)信息進(jìn)行數(shù)據(jù)補(bǔ)位,使信息的字節(jié)長(zhǎng)度是

15、16 的倍數(shù),然后,以一個(gè) 16 位的檢驗(yàn)和追加到信息末尾,并且根據(jù)這個(gè)新產(chǎn)生的信息計(jì)算出散列值。后來, Rogier 和 Chauvaud 發(fā)現(xiàn),如果忽略了檢驗(yàn)和,那樣就將產(chǎn)生 MD2 沖突。MD2 算 法的加密后結(jié)果是唯一的-即沒有重復(fù)。 為了加強(qiáng)算法的安全性,Rivest 在 1990 年又開發(fā)出 MD4 算法。MD4 算法同 樣需要填補(bǔ)信息以確保信息的字節(jié)長(zhǎng)度加上 448 后能被 512 整除(信息字節(jié)長(zhǎng)度 mod 512=448。然后,一個(gè)以 64 位二進(jìn)制表示的信息的最初長(zhǎng)度被添加進(jìn)來。 信息被處理成 512 位迭代結(jié)構(gòu)的區(qū)塊,而且每個(gè)區(qū)塊要通過三個(gè)不同步驟的處 理。Den Boe

16、r 和 Bosselaers 以及其他人很快的發(fā)現(xiàn)了攻擊 MD4 版本中第一步 和第三步的漏洞。Dobbertin 向大家演示了如何利用一部普通的個(gè)人電腦在幾 分鐘內(nèi)找到 MD4 完整版本中的沖突(這個(gè)沖突實(shí)際上是一種漏洞,它將導(dǎo)致對(duì)不 同的內(nèi)容進(jìn)行加密卻可能得到相同的加密后結(jié)果),毫無(wú)疑問,MD4 就此被淘汰 掉了。 一年以后,即 1991 年,Rivest 開發(fā)出技術(shù)上更為趨近成熟的 MD5 算法。 它在 MD4 的基礎(chǔ)上增加了“安全-帶子”(safety-belts)的概念。雖然 MD5 比 MD4 稍微慢一些,但卻更為安全。這個(gè)算法很明顯的由四個(gè)和 MD4 設(shè)計(jì)有少許 不同的步驟組成。

17、在 MD5 算法中,信息-摘要的大小和填充的必要條件與 MD4 完全相同。Den Boer 和 Bosselaers 曾發(fā)現(xiàn) MD5 算法中的假?zèng)_突(pseudo- collisions),但除此之外就沒有其他被發(fā)現(xiàn)的加密后結(jié)果了。Van Oorschot 和 Wiener 曾經(jīng)考慮過一個(gè)在散列中暴力搜尋沖突的函數(shù)(brute-force hash function),而且他們猜測(cè)一個(gè)被設(shè)計(jì)專門用來搜索 MD5 沖突的機(jī)器可以平均每 24 天就找到一個(gè)沖突,但單從 1991 年到 2001 年這 10 年間,竟沒有出現(xiàn)替代 MD5 算法的新算法,我們可以看出這個(gè)瑕疵并沒有太多的影響 MD5 的

18、安全性。 而所有這些都不足以成為 MD5 在實(shí)際應(yīng)用中的問題,并且由于 MD5 算法的使用 不需要支付任何版權(quán)費(fèi)用,所以在一般的情況下,MD5 可以算是比較安全的了。 1.21.2選題意義選題意義 隨著網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用,網(wǎng)絡(luò)信息安全越來越引起人們的重視。最初的 計(jì)算機(jī)應(yīng)用程序通常沒有或很少有安全性,那是因?yàn)楫?dāng)時(shí)的系統(tǒng)是專屬和封閉 的,簡(jiǎn)單地說,計(jì)算機(jī)之間雖然也交換數(shù)據(jù)和信息,但形成的網(wǎng)絡(luò)完全在組織 控制之下。在那個(gè)時(shí)候,計(jì)算機(jī)之間通信的協(xié)議也是不公開的,因此,別人很 難訪問交換的信息。同時(shí),因?yàn)楫?dāng)時(shí)信息安全并不是個(gè)重要問題,所以導(dǎo)致了 很多人都忽略了數(shù)據(jù)的安全性,直到后來人們真正的認(rèn)識(shí)和了解

19、到數(shù)據(jù)的重要 性。而選該畢業(yè)設(shè)計(jì),主要是針對(duì)數(shù)據(jù)在存儲(chǔ)的時(shí)候存在大量的安全問題,并 且在現(xiàn)有 MD5 加密算法基礎(chǔ)上,提出了一種數(shù)據(jù)存儲(chǔ)加密策略。同時(shí),針對(duì) md5 算法而進(jìn)行進(jìn)一步的了解和研究。 1.31.3選題背景選題背景 現(xiàn)階段,信息安全性已成為全社會(huì)共同關(guān)心問題,密碼學(xué)研究也越來越被 人們所關(guān)注。密碼學(xué)主要研究的是通訊保密。近年來,密碼學(xué)研究之所以十分 活躍,主要原因是它與計(jì)算機(jī)科學(xué)的蓬勃發(fā)展息息相關(guān)。由于公共和私人部門 的一些機(jī)構(gòu)越來越多的應(yīng)用電子數(shù)據(jù)處理,將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,因此防止 非法泄露,刪除,修改等是必須重視的問題。對(duì)數(shù)據(jù)進(jìn)行加密能夠防止他人盜 取需要保密的信息,但這只是

20、解決了一方面的問題,至于如何防止他人對(duì)重要 數(shù)據(jù)進(jìn)行破壞,如何確定交易者的身份,以及如何防止日后發(fā)生糾紛時(shí)交易者 抵賴,還需要采取其它的手段,這一手段就是數(shù)字簽名。數(shù)字簽名技術(shù)實(shí)際上 是在數(shù)據(jù)加密技術(shù)基礎(chǔ)上的一種延伸應(yīng)用。數(shù)字簽名經(jīng)常和單向散列(Hash)函 數(shù)一起使用,而單向散列(Hash)函數(shù)是現(xiàn)代密碼學(xué)的核心。最常見的散列算法 有 MD5,SHA 和 Snefru,MD5 是當(dāng)今非常流行的優(yōu)秀的典型 Hash 加密技術(shù)。 本畢業(yè)設(shè)計(jì)主要是對(duì) MD5 算法進(jìn)行研究,并在此基礎(chǔ)上編程實(shí)現(xiàn) MD5 算法 函數(shù),并實(shí)現(xiàn)封裝;開發(fā)一個(gè)簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)程序驗(yàn)證算法的正確性和可用性。 2 2 相關(guān)理論基

21、礎(chǔ)相關(guān)理論基礎(chǔ) 2.12.1單向散列函數(shù)單向散列函數(shù) 單向散列函數(shù)4也稱 Hash(哈希)函數(shù)。它是現(xiàn)代密碼學(xué)的核心。散列函數(shù) 一直在計(jì)算機(jī)科學(xué)中使用,散列函數(shù)就是把可變的輸入長(zhǎng)度串轉(zhuǎn)換成固定長(zhǎng)度 輸出值(叫做散列值)的一種函數(shù)。而單向散列函數(shù)是在一個(gè)方向上工作的散列 函數(shù),從預(yù)映射的值很容易計(jì)算出它的散列值,但要使它的散列值等于一個(gè)特 殊值卻很難。 散列函數(shù)是公開的,對(duì)處理過程并不保密,單向散列函數(shù)的安全性是它的 單向性,其輸出不依賴于輸入。平均而言,預(yù)映射值的單個(gè)位的改變,將引起 散列值中一半位的改變。已知一個(gè)散列值,要找到預(yù)映射的值,使它的值等于 已知的散列值在計(jì)算上是不可行的,可把單向

22、散列函數(shù)看作是構(gòu)成指紋文件的 一種方法。如果你驗(yàn)證某人持有一個(gè)特定的文件(你同時(shí)也持有該文件),但你 不想他將文件傳給你,那么,就要通知他將該文件的散列值傳給你,如果他傳 送的散列值是正確的,那么可以肯定他持有那份文件。 2.1.12.1.1 單向散列函數(shù)的基本原理單向散列函數(shù)的基本原理 單向散列函數(shù) H(M)是對(duì)一個(gè)任意長(zhǎng)度的消息 M 進(jìn)行運(yùn)算。返回一個(gè)固定 長(zhǎng)度的值 h。 h=H(M) 其中 h 的長(zhǎng)度為 m。 輸入為任意長(zhǎng)度且輸出為固定長(zhǎng)度的函數(shù)有很多種,但意向散列函數(shù)具有 使其單向的如下特性: 1)給定值 M,可以很方便地計(jì)算出 h 值。 2)給定 h,根據(jù) H (M) =h 計(jì)算 M

23、 很難。 3)給定 M,要找到另一則消息 M并使得 H(m)=H(m)很難。 也就是說,如果某個(gè)入侵者想要獲得一則消息,他必須破壞掉每個(gè)運(yùn)用單 向函數(shù)的協(xié)議的安全性,因?yàn)閱蜗蛐院瘮?shù)的關(guān)鍵在于產(chǎn)生 M 的一個(gè)唯一的消息 摘要。 事實(shí)上,單向散列函數(shù)是建立在壓縮函數(shù)的思想基礎(chǔ)之上的。單向散列函 數(shù)的輸出值為一個(gè)長(zhǎng)度為 n 的散列值,該長(zhǎng)度比輸入值的長(zhǎng)度 m 要小很多,即 nm。進(jìn)行該函數(shù)運(yùn)算的前提條件是我們應(yīng)根據(jù)一定規(guī)則將消息分成若干個(gè)消息 片段,散列函數(shù)的輸入值是一個(gè)消息片段和前一個(gè)消息片段的輸出值,而其輸 出值則是該消息片段前所有消息片段的散列值。這也就是說,消息片段 M 的散 列值的計(jì)算方法

24、可表示為: 該過程可圖示如下: Mi hi Hi-1 圖 1 同時(shí)該散列值又將作為下一步運(yùn)算的輸入值之一,由此推算可知,整個(gè)消 息的散列值 n 即為最后一個(gè)消息片段經(jīng)計(jì)算所得的散列值。這樣,我們最終得 到的將是一個(gè)固定長(zhǎng)度的函數(shù)值。 2.1.22.1.2 散列值的長(zhǎng)度散列值的長(zhǎng)度 我們都知道,散列值越長(zhǎng)則安全性越好,MD5 算法就是單向散列函數(shù)產(chǎn)生 128 位的散列值,以此保證了它的安全性,以下即為生成一個(gè)長(zhǎng)散列值的方法: 1)運(yùn)用單向散列函數(shù)生成一則消息的散列值。 2)將該散列值附于消息之后。 3)產(chǎn)生包含散列值和消息在內(nèi)的一連串的數(shù)值的散列值。 4)將第一步產(chǎn)生的散列值與第三步產(chǎn)生的散列值

25、組合起來生成一個(gè)更大的 散列值。 5)重復(fù) 1)至 3)步若干次。 2.22.2MD5MD5 算法的基本原理算法的基本原理 MD5 算法以 512 位分組來處理輸入文本,每一分組又劃分為 16 個(gè) 32 位子 分組。算法的輸出由 4 個(gè) 32 位分組組成,將它們級(jí)聯(lián)形成一個(gè) 128 位散列值5。 單向散列 函數(shù) 第 1 步::填充 MD5 的第 1 步是在原消息中增加填充位,目的是使原消息長(zhǎng)度等于一個(gè)值, 即比 512 的倍數(shù)少 64 位。例如,如果原消息長(zhǎng)度為 1000 位,則要填充 472 位, 使消息長(zhǎng)度為 1472 位,因?yàn)?64+1472=1536,是 512 的倍數(shù)(1536=51

26、2*3)。 這樣,填充后,原消息的長(zhǎng)度為 448 位(比 512 少 64),960 位(比 1024 少 64 位),1472 位(比 1536 少 64 位),等等。 圖 2 填充過程 填充對(duì)用一個(gè) 1 位和多個(gè) 0 位進(jìn)行填充。如果消息長(zhǎng)度已經(jīng)是 448,則要 填充 512 位,使長(zhǎng)度變成 960 位。因此,填充長(zhǎng)度為 1512 的值。圖 2 顯示了 填充過程。 第 2 步:添加長(zhǎng)度 增加填充位后,下一步要計(jì)算機(jī)消息原長(zhǎng),將其加進(jìn)填充后的消息末尾。 先計(jì)算消息長(zhǎng)度,不包括填充位(即增加填充位前的長(zhǎng)度)。例如,如果原消息 為 1000 位,則填充 472 位,使其變成比 512 的倍數(shù)(1

27、536)少 64 位,但長(zhǎng)度為 1000,而不是 1472。 這個(gè)消息原長(zhǎng)表示為 64 位值,添加到加進(jìn)填充后的消息末尾,如圖 3 所示。 如果消息長(zhǎng)度超過 264位(即 64 位無(wú)法表示,因?yàn)橄⑻L(zhǎng)),則只用長(zhǎng)度的低 64 位,即等于計(jì)算 length mod 264。 我們看到,這時(shí)消息長(zhǎng)度為 512 的倍數(shù),成為要散列的消息。 圖 3 添加長(zhǎng)度 第 3 步:將輸入分成 512 位的塊 下面要將輸入分成 512 位的塊,如圖 4 所示。 圖 4 將輸入分成 512 塊 第 4 步:初始化鏈接變量 第 4 步要初始化四個(gè)鏈接變量,分別稱為 A,B,C,D,它們都是 32 位的 數(shù)字,這些鏈

28、接變量的初始十六進(jìn)制值如表 1 所示,低的字節(jié)在前面。 表 1 鏈接變量 注意低位的字節(jié)在前面指的是 Little Bndian 平臺(tái)上內(nèi)存中字節(jié)的排列方 式,而在程序中書寫時(shí),要寫成: A=0 x B=Ox89abcdef C=Oxfedcba98 D=0 x 第 5 步:處理塊 初始化之后,就要開始實(shí)際算法了。這是個(gè)循環(huán),對(duì)消息中的多個(gè) 512 位 塊運(yùn)行。 5.1 步:將四個(gè)鏈接變量復(fù)制到四個(gè)變量 a,b,c,d 中,使 a=A,b=B,c=C,d=D,如圖 5 所示, 圖 5 將四個(gè)鏈接變量復(fù)制到四個(gè)變量中 實(shí)際上,這個(gè)算法將 a,b,c,d 組合成 128 位寄存器(abcd),寄存

29、器 (abcd)在實(shí)際算法運(yùn)算中保存中間結(jié)果和最終結(jié)果,如圖 6 所示。 圖 6 鏈接變量抽象視圖 5.2 步:將當(dāng)前 512 位塊分解為 16 個(gè)子塊,每個(gè)子塊為 32 位,如圖 7 所 示。 圖 7 將當(dāng)前 512 塊分解為 16 個(gè)子塊 5.3 步:主循環(huán)有四輪,每輪很相似。每一輪的操作,都要處理一個(gè)塊中 的 16 個(gè)子塊。每一輪的輸入如下:(a) 16 個(gè)子塊;(b)變量 a,b,c,d;(c) 常量 t,如圖 8 所示。 圖 8 每一輪處理 這四輪中的第 1 步進(jìn)行不同處理,其他步驟是相同的。 -每一輪有 16 個(gè)輸入子塊 M0,M1,M15,或表示為 Mi,其 中 i 為 115。

30、我們知道,每個(gè)子塊為 32 位。 -t 是個(gè)常量數(shù)組,包含 64 個(gè)元素,每個(gè)元素為 32 位。我們把數(shù)組 t 的 元素表示為 t1,t2,t64,或 ti,其中 i 為 164。由于有四輪, 因此每一輪用 64 個(gè) t 值中的 16 個(gè)。 下面總結(jié)這四輪的迭代。每一輪輸出的中間和最終結(jié)果復(fù)制到寄存器 abcd 中,注意,每一輪有 16 個(gè)寄存器。 1)首先對(duì) b, c, d 作一次非線性函數(shù)運(yùn)算,這個(gè)運(yùn)算在四輪中不同。 2)變量 a 加進(jìn)第 1 步的輸出(即寄存器 abcd)。 3)消息子塊 Mi加進(jìn)第 2 步的輸出(即寄存器 abcd)。 4)常量 ti加進(jìn)第 3 步輸出(即寄存器 abc

31、d)。 5)第 4 步的輸出(即寄存器 abcd)循環(huán)左移 s 位。 6)變量 b 加進(jìn)第 5 步輸出(即寄存器 abcd)。 7)第 6 步的輸出成為下一步的新 abcd。 圖 9 和圖 10 顯示了 MD5 操作過程。 圖 9 MD5 主循環(huán) 圖 10 MD5 的一個(gè)執(zhí)行過程 以下是每次操作中用到的四個(gè)線性函數(shù)(每輪一個(gè)),簡(jiǎn)單的說,就是布爾 運(yùn)算。 F(x,y,z) = (x virtual MD5_CTX(); void MD5Update ( unsigned char *input, unsigned int inputLen); void MD5Final (unsigned c

32、har digest16); private: unsigned long int state4; unsigned long int count2; unsigned char buffer64; unsigned char PADDING64; private: void MD5Init (); void MD5Transform (unsigned long int state4, unsigned char block64); void MD5_memcpy (unsigned char* output, unsigned char* input,unsigned int len);

33、void Encode (unsigned char *output, unsigned long int *input,unsigned int len); void Decode (unsigned long int *output, unsigned char *input, unsigned int len); void MD5_memset (unsigned char* output,int value,unsigned int len); ; #endif 下面為部分調(diào)用代碼6: MD5_CTX md5T; unsigned char digest16; md5T.MD5Upda

34、te (unsigned char*)pBuf,iTotal); md5T.MD5Final(digest); 5 5具體設(shè)計(jì)流程及實(shí)現(xiàn)具體設(shè)計(jì)流程及實(shí)現(xiàn) 5.15.1讀取的設(shè)計(jì)和實(shí)現(xiàn)讀取的設(shè)計(jì)和實(shí)現(xiàn) 主要是在界面里顯示數(shù)據(jù)庫(kù)7的內(nèi)容,并把密碼加密8,顯示加密后的密 碼。主要流程如下: 開始 結(jié)束 讀取 連接數(shù)據(jù)庫(kù) 顯示用戶名和加密 后的密碼 圖12 讀取功能的實(shí)現(xiàn)流程圖 5.25.2插入的設(shè)計(jì)和實(shí)現(xiàn)插入的設(shè)計(jì)和實(shí)現(xiàn) 在插入數(shù)據(jù)時(shí),如果沒有先讀取數(shù)據(jù)在進(jìn)行插入的話,就會(huì)顯示“姓名和 密碼信息不能為空”,如果讀取了數(shù)據(jù)在進(jìn)行插入,就會(huì)顯示插入后的數(shù)據(jù)和以 前數(shù)據(jù)庫(kù)中已經(jīng)存在的數(shù)據(jù),主要流程如下:

35、 開始 結(jié)束 插入 連接數(shù)據(jù)庫(kù) 存入數(shù)據(jù) 圖13 插入功能的實(shí)現(xiàn)流程圖 5.35.3修改的設(shè)計(jì)和實(shí)現(xiàn)修改的設(shè)計(jì)和實(shí)現(xiàn) 在插入數(shù)據(jù)時(shí),如果沒有先讀取數(shù)據(jù)就進(jìn)行插入的話,就會(huì)顯示“表中記 錄數(shù)為空或者姓名密碼沒有設(shè)置” ,如果讀取了數(shù)據(jù)再進(jìn)行插入,就會(huì)顯示插入 后的數(shù)據(jù)和以前數(shù)據(jù)庫(kù)中已經(jīng)存在的數(shù)據(jù),主要流程如下: 圖14 修改功能的實(shí)現(xiàn)流程圖 5.45.4刪除的設(shè)計(jì)和實(shí)現(xiàn)刪除的設(shè)計(jì)和實(shí)現(xiàn) 需要先讀取數(shù)據(jù),然后才能進(jìn)行刪除,數(shù)據(jù)被刪除后,界面里不再顯示,數(shù) 據(jù)庫(kù)里也不再顯示,在界面和數(shù)據(jù)庫(kù)中只會(huì)顯示還未被刪除的數(shù)據(jù)。 圖 15 刪除功能的實(shí)現(xiàn)流程圖 讀取修改 顯示修改后 的信息 修改后的信 息存入數(shù)

36、據(jù) 庫(kù),被修改的 被取代 用戶名 密碼 加密后的密 碼 表中記錄數(shù)為空或者姓 名年齡沒有設(shè)置 連接數(shù)據(jù) 庫(kù) 讀取刪除 不顯示刪除 后的信息 刪除后的信 息移出數(shù)據(jù) 庫(kù) 顯示未被刪除的用戶名 密碼 加密后的密 碼 連接數(shù)據(jù) 庫(kù) 6 6調(diào)試與分析調(diào)試與分析 6.16.1 概述概述 該設(shè)計(jì)主要是針對(duì) MD5 算法的應(yīng)用和理解,對(duì)算法進(jìn)行研究和實(shí)現(xiàn),并在 此基礎(chǔ)上編程實(shí)現(xiàn) MD5 算法函數(shù)和封裝;同時(shí)開發(fā)一個(gè)簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)程序驗(yàn) 證算法的正確性和可用性。最后是將數(shù)據(jù)存入到 ACCESS 數(shù)據(jù)庫(kù)中。 6.26.2測(cè)試分析報(bào)告測(cè)試分析報(bào)告 經(jīng)過測(cè)試和調(diào)試,一切都運(yùn)行正常,能實(shí)現(xiàn)讀取,插入,修改,刪除,關(guān) 于,退出功能。下圖為一讀取功能的實(shí)現(xiàn)圖: 圖 16 運(yùn)行結(jié)果圖 結(jié)結(jié) 論論 本文主要研究的內(nèi)容是:分析和研究Hash簽名中的MD5(Message-Digest algorithm 5)算法:在VC+6.0平臺(tái)上用C+語(yǔ)言實(shí)現(xiàn)了MD5算法對(duì)數(shù)據(jù)的處理, 同時(shí)使用加密方式保存密碼到ACCESS數(shù)據(jù)庫(kù),在實(shí)現(xiàn)加密過程后,它可以完成 讀取,插入,修改,刪除,關(guān)于,退出這幾個(gè)功

溫馨提示

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

評(píng)論

0/150

提交評(píng)論