freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-md5算法的研究與實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)加密—論文-文庫吧資料

2024-12-08 13:22本頁面
  

【正文】 MPORT define DLL_EXPORT __declspec(dllimport) else define DLL_EXPORT __declspec(dllexport) endif ifndef _LGY_MD5_H define _LGY_MD5_H /* MD5 Class. */ class DLL_EXPORT MD5_CTX { public: MD5_CTX()。 特別注意是: MD5_CTX是 ,然后要用這個(gè)類生成自已的對(duì)象。在使用運(yùn)行時(shí)動(dòng)態(tài)鏈接時(shí),無需使用導(dǎo)入庫文件。 運(yùn)行時(shí)動(dòng)態(tài)鏈接 在運(yùn)行時(shí)動(dòng)態(tài)鏈接中,應(yīng)用程序調(diào)用 LoadLibrary 函數(shù)或 LoadLibraryEx 函數(shù)以在運(yùn)行時(shí)加載 DLL。 要使用加載時(shí)動(dòng)態(tài)鏈接,請(qǐng)?jiān)诰幾g和鏈接應(yīng)用程序時(shí)提供頭文件 (.h)和導(dǎo)入庫文件 (.lib)。一個(gè)獨(dú)立的 DLL程序本身即為可執(zhí)行程序,但它一般不能單 獨(dú)執(zhí)行,它和普通可執(zhí)行程序的區(qū)別就在于它并不主動(dòng)獲取 CPU(中央處理器的簡稱 )服務(wù),通常是被其他真正的可執(zhí)行程序或 DLL所調(diào)用。動(dòng)態(tài)鏈接庫是一些過程和函數(shù)及資源 (包括 : Bit— map、 Icon等 )的集合,是一種二進(jìn)制文件,它能夠同時(shí)被若干個(gè)應(yīng)用程序或其他 DLL所調(diào)用。 數(shù)據(jù)庫設(shè)計(jì) 表 2 字段值設(shè)置 第 15 頁 共 23 頁 主要流程圖 開 始結(jié) 束輸 入 用 戶 名 和 密 碼M D 5 加 密將 加 密 的 數(shù) 據(jù) 存 入A C C E S S 圖 11 主功能流程圖 4 MD5算法的 DLL封裝 DLL是 Dynamic Link Library的縮寫,翻譯為動(dòng)態(tài)鏈接庫,是 Windows采用的一種極其重要的技術(shù)。 主要功能模塊 數(shù)據(jù)加密 主要是通過 MD5算法的調(diào)用 , 對(duì)用戶密碼進(jìn)行加密 , 使得加密前和加密后的密碼都一起顯示出來 。利用 MD5 算法來進(jìn)行文件校驗(yàn)的方案,被大量應(yīng)用在軟件下載站點(diǎn)、論壇數(shù)據(jù)庫和系統(tǒng)文件安全等方面。 此外, MD5 還應(yīng)用于 認(rèn)證中, PAPMD5 認(rèn)證采用 MD5 算法,用戶密碼不以明文方式在網(wǎng)上傳輸,從而保證了認(rèn)證信息的安全。這時(shí),網(wǎng)站失去了很重要的功能,就是獲取已忘記的密碼的功能。其基木原理是,文件系統(tǒng)完整性檢查程序 (MAFFIC)采用的技術(shù)核心就是對(duì)每個(gè)要監(jiān)控的文件利用 MD5 算法產(chǎn)生一個(gè)數(shù)字指紋并保留下來,如果文件的數(shù)字指紋與保留的數(shù)字指紋不一致,那么這個(gè)文件必定被改動(dòng)過了,當(dāng) MAFFIC 運(yùn)行在數(shù)據(jù)庫生成模式時(shí),根據(jù)管理員設(shè)置的一個(gè)配置文件對(duì)指定要監(jiān)控的文件進(jìn)行讀取,對(duì)每個(gè)文件結(jié)合 MD5 加密手段生成相應(yīng)數(shù)字指紋,并將這些結(jié)果保存在自己的數(shù) 據(jù)庫中,當(dāng)懷疑系統(tǒng)被入侵時(shí),由 MAFFIC 根據(jù)先前生成的數(shù)據(jù)庫文件來做一次數(shù)字指紋的對(duì)照,如果文件被替換,則與 第 14 頁 共 23 頁 MAFFIC 數(shù)據(jù)庫內(nèi)相應(yīng)數(shù)字指紋不匹配,這時(shí)它報(bào)告相應(yīng)的文件被更改,管理員就明白系統(tǒng)遭受了入侵。 5) MD5 算法在保護(hù)文件系統(tǒng)完整性中的應(yīng)用 MD5 算法在文件系統(tǒng)完整性保護(hù)中的應(yīng)用是利用它構(gòu)造完整性檢查程序,對(duì)文件系統(tǒng)的完整性進(jìn)行分析和檢查,監(jiān)視文件系統(tǒng)的非授權(quán)或不期望的改變,檢測和通知系統(tǒng)管理員改變的、增加的和刪除的文件。這樣這份密文被 B收到以后, B用自己的私鑰將郵 件解密,得到 A的原文和簽名,B的 PGP 也從原文計(jì)算出一個(gè) 128 位的文摘來,再用 A的公鑰解密簽名得到的數(shù)比較,如果符合就說明這份郵件確實(shí)是 A寄來的。假設(shè) A要向 B發(fā)一封信。 4) MD5 在 PGP 中的應(yīng)用 PGP 是一個(gè)基于 RSA 公鑰加密體系的郵件加密軟件。由于 MD5 不可逆,所以 MD5 密文無論被誰知道都無法竊得源碼。而以后用戶每次仍是自己輸源碼,但我們只需比對(duì) MD5 密文即可。這里我舉一個(gè)例子 :我們到銀行取錢輸入密碼時(shí),一般是源碼被存近了銀行的主機(jī),如果銀行的內(nèi)部人員或黑客侵入到數(shù)據(jù)庫,很輕易地就竊取了你的源碼。這種加密技術(shù)被廣泛的應(yīng)用于 UNIX系統(tǒng)中 , 這也是為什么 UNIX系統(tǒng)比一般操作系統(tǒng)更為堅(jiān)固一個(gè)重要原因。有兩種方法得到字典,一種是日常搜集的用做密碼的字符串表,另一種是用排列組合方法生成的,先用 MD5 程序計(jì)算出這些字典項(xiàng)的MD5 值,然后再用目標(biāo)的 MD5 值在這個(gè)字典中檢索。通過這樣的步驟,系統(tǒng)在并不知道用戶密碼的明碼的情況小就可以確定用戶登錄系統(tǒng)的合法性,這不但可以避免用戶的密碼被具有系統(tǒng)管理員權(quán)限的用戶知道 , 而且還在一定程度上增加了密碼被破解的難度。比如在 UNIX 系統(tǒng)中用戶的密碼就是以MD5(或其它類似的算法 )經(jīng)加密后存儲(chǔ)在文件系統(tǒng)中。 MD5 的應(yīng)用 1) MD5 在電子商務(wù)領(lǐng)域內(nèi)的應(yīng)用 在很多電子商務(wù)和社區(qū)應(yīng)用中,管理用戶的 Account 是一種最常用的基木功能,盡管很多 Application Server 提供了這些基本組件,但很多應(yīng)用開發(fā)者為了管理的靈活性還是喜歡采用關(guān)系數(shù)據(jù)庫來管理用戶,懶惰的做法是用戶的密碼往往使用明文或簡單的變換后直接保存在數(shù)據(jù)庫中,因此這些用戶的密碼對(duì)軟件開發(fā)者或系統(tǒng)管理員來說可以說毫無保密可 言。 S 表示 循環(huán)左移 S 位,則四種操作為 : FF(a,b,c,d,Mi,s,ti)表示 a=b+((a+(F(b,c,d)+Mi+ti)s) GG(a,b,c,d,Mi,s,ti)表示 a=b+((a+(G(b,c,d)+Mi+ti)s) HH(a,b,c,d,Mi,s,ti)表示 a=b+((a+(H(b,c,d)+Mi+ti)s) II(a,b,c,d,Mi,s,ti)表示 a=b+((a+(I(b,c,d)+Mi+ti)s) 這四輪 (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,0xclbdceee) 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) 第 11 頁 共 23 頁 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,0xe7d3dbc8) 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,0x8d2a4c8a) 第三輪 HH(a,b,c,d,M5,4,0x fffa3942) 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,0x4dbecfa9) 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) 第 12 頁 共 23 頁 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,0xbd3ad235) II(c,d,a,b,M2,15,0x2ad7d2bb) II(b,c,d,a,M9,21,0xeb86d391) 所有這些完成之后,將 A, B, C, D分別加上 a, b, c, d, 然后用下一分組數(shù)據(jù)繼續(xù)運(yùn)行 算法,最后 MD5 算法產(chǎn)生 128 位的輸出是 A, B, C和 D的級(jí)聯(lián),其中低字節(jié)始于 A,高字節(jié)終于 D。是與, |是或, ~是非, ^是異或 ) 這些函數(shù)是這樣設(shè)計(jì)的 : 如果 x, y 和 z 的對(duì)應(yīng)位是獨(dú)立和均勻的,那么結(jié)果的每一位也是獨(dú)立和均勻的,函數(shù) F 是按逐位方式操作 ; 如果 X, 那么 Y, 否則 Z, 函數(shù) H是逐位奇偶操作。z)|(yamp。y)|((~x)amp。 圖 9 MD5主循環(huán) 圖 10 MD5的一個(gè)執(zhí)行過程 以下 是每次操作中用到的四個(gè)線性函數(shù) (每輪一個(gè) ),簡單的說,就是布爾運(yùn)算。 7)第 6步的輸出成為下一步的新 abcd。 5)第 4步的輸出 (即寄存器 abcd)循環(huán)左移 s位。 3)消息子塊 M[i]加進(jìn)第 2步的輸出 (即寄存器 abcd)。 1)首先對(duì) b, c, d 作一次非線性函數(shù)運(yùn)算,這個(gè)運(yùn)算在四輪中不同。 下面總結(jié)這四輪的迭代。我們把數(shù)組 t 的元素表示為 t[1], t[2], ? , t[64],或 t[i],其中 i為 1~ 64。我們知道,每個(gè)子塊為 32 位。 圖 8 每一輪處理 這四輪中的第 1步進(jìn)行不同處理,其他步驟是相同的。每一輪 的 操作, 都要 處理一個(gè)塊中的16個(gè)子塊。 圖 6 鏈接變量 抽象視圖 第 8 頁 共 23 頁 步 : 將當(dāng)前 512 位塊分解為 16 個(gè)子塊,每個(gè)子塊為 32 位,如圖 7所示。這是個(gè)循環(huán),對(duì)消息中的多個(gè) 512 位塊運(yùn)行。 圖 4 將輸入分成 512塊 第 4 步 : 初始化鏈接變量 第 4 步要初始化四個(gè)鏈接變量 , 分別稱為 A, B, C, D, 它們都是 32位的數(shù)字,這些鏈接變量的初始十六進(jìn)制值如表 1所示,低的字節(jié)在前面。 我們看到,這時(shí)消息長度為 512的倍數(shù),成為要散列的消息。 這個(gè)消息原長表示為 64 位值,添加到加進(jìn)填充后的消息末尾,如圖 3所示。先計(jì)算消息長度,不包括填充位 (即增加填充位前的長度 )。圖 2 顯示了填充過程。如果消息長度已經(jīng)是 448,則要填充 512 位,使長度變成 960 位。 這樣,填充后,原消息的長度為 448 位 (比 512 少 64), 960 位 (比 1024 少64位 ), 1472 位 (比 1536 少 64位 ),等等。 第 1 步 : :填充 MD5 的第 1步是在原消息中增加填充位,目的是使原消息長度等于一個(gè)值 ,即比 512 的倍數(shù)少 64位。 MD5算法的基本原理 MD5 算法以 512 位分組來處理輸入文本,每一分組又劃分為 16 個(gè) 32位子分組。 4)將第一步產(chǎn)生的散列值與第三步產(chǎn)生的散列值組合起來生成一個(gè)更大的散列值。 2
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1