1. Hash算法
哈希算法也稱摘要算法、散列算法,哈希函數(shù)的輸入為一段可變長度x,輸出一固定長度串,該串被稱為x的哈希值。
Hash函數(shù)滿足以下幾個基本需求:
(1)輸入值x為任意長度
(2)輸出值長度固定
(3)單向函數(shù),算法不可逆
(4)唯一性,很難找到兩個不同的輸入會得到相同的Hash輸出值
2. 概要
MD5信息摘要算法,一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設(shè)計,于1992年公開,用以取代MD4算法。這套算法的程序在 RFC 1321 標準中被加以規(guī)范。1996年后該算法被證實存在弱點,可以被加以破解,對于需要高度安全性的數(shù)據(jù),專家一般建議改用其他算法,如SHA-2。2004年,證實MD5算法無法防止碰撞(collision),因此不適用于安全性認證,如SSL公開密鑰認證或是數(shù)字簽名等用途。
3. 算法原理
a. 填充
消息長度應(yīng)為一個比512bit的倍數(shù)少64bit的數(shù),即:
512*n+448
或
512*n-64
填充方法:在消息后添加一個1,再后接多個0
后64bit為填充前消息長度
如下圖所示:
這樣可以對明文分組,每組長度為512bit,即16個長度為32bit的字。
b. 迭代
標準幻數(shù)
MD5輸出為128bit,即4個32bit的字,可用A、B、C、D表示。
A、B、C、D為標準幻數(shù),其初始值分別為:
A=01234567
B=89ABCDEF
C=FEDCBA98
D=76543210
對于每512bit輸入,MD5運算64步,得到128bit輸出,該輸出參與下一輪輸入,如圖所示:
每輪中512bit分為16份,每份32bit,即4B,分別參與4輪運算中16步迭代運算,因此4輪共64步。
邏輯函數(shù)F、G、H、I分別如下:
F( X ,Y ,Z ) = ( X & Y ) | ( (~X) & Z )
G( X ,Y ,Z ) = ( X & Z ) | ( Y & (~Z) )
H( X ,Y ,Z ) =X ^ Y ^ Z
I( X ,Y ,Z ) =Y ^ ( X | (~Z) )
4. 應(yīng)用場景
數(shù)據(jù)完整性校驗
常用Web服務(wù)器本身缺乏頁面完整性驗證機制,無法防止站點文件被篡改。為確保文件的完整性,防止用戶訪問頁面被篡改,可采用MD5算法校驗文件完整性的Web防篡改機制,計算目標文件的數(shù)字指紋,運用快照技術(shù)恢復(fù)被篡改文件,以解決多數(shù)防篡改系統(tǒng)對動態(tài)站點保護失效及小文件恢復(fù)難的問題 。
密碼加密
我們知道MD5加密是不可逆的,用MD5算法加密后的字符串,是無法反向推算出原始密碼的,可以有效防止密碼被盜,但是固定長度的純文本加密容易被撞庫,既然如此,那么我們就要對密碼加鹽。服務(wù)器在保存密碼時,會生成一段隨機字符串并添加到密碼后再做MD5散列,確保密碼的安全性。
數(shù)字簽名
MD5 算法還可以作為一種電子簽名的方法來使用,使用 MD5算法就可以為任何文件(不管其大小、格式、數(shù)量)產(chǎn)生一個獨一無二的“數(shù)字指紋”,借助這個“數(shù)字指紋”,通過檢查文件前后 MD5 值是否發(fā)生了改變,就可以知道源文件是否被改動。我們在下載軟件的時候經(jīng)常會發(fā)現(xiàn),軟件的下載頁面上除了會提供軟件的下載地址以外,還會給出一串長長的字符串。這串字符串其實就是該軟件的MD5 值,它的作用就在于下載該軟件后,對下載得到的文件用專門的軟件(如 Windows MD5 check 等)做一次 MD5 校驗,以確保我們獲得的文件與該站點提供的文件為同一文件。利用 MD5 算法來進行文件校驗的方案被大量應(yīng)用到軟件下載站、論壇數(shù)據(jù)庫、系統(tǒng)文件安全等方面。文章來源:http://www.zghlxwxcb.cn/news/detail-417355.html
注意
Hash算法不是加密算法。
hash算法也被稱為摘要算法、散列算法,其過程不可逆,目的主要是確保數(shù)據(jù)的完整性。
加密算法的目的主要是確保數(shù)據(jù)的保密性。文章來源地址http://www.zghlxwxcb.cn/news/detail-417355.html
到了這里,關(guān)于哈希算法--MD5算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!