MD5加密演算法的一些知識

2022-09-02 18:48:06 字數 1081 閱讀 6466

md5簡介

md5的全稱是message-digest algorithm 5,在90年代初由mit的電腦科學實驗室和rsa data security inc發明,經md2、md3和md4發展而來。

message-digest泛指位元組串(message)的hash變換,就是把乙個任意長度的位元組串變換成一定長的大整數。請注意我使用了「位元組串」而不是「字串」這個詞,是因為這種變換只與位元組的值有關,與字符集或編碼方式無關。

md5將任意長度的「位元組串」變換成乙個128bit的大整數,並且它是乙個不可逆的字串變換演算法,換句話說就是,即使你看到源程式和演算法描述,也無法將乙個md5的值變換回原始的字串,從數學原理上說,是因為原始的字串有無窮多個,這有點象不存在反函式的數學函式。

md5的典型應用是對一段message(位元組串)產生fingerprint(指紋),以防止被「篡改」。舉個例子,你將一段話寫在乙個叫readme.txt檔案中,並對這個readme.txt產生乙個md5的值並記錄在案,然後你可以傳播這個檔案給別人,別人如果修改了檔案中的任何內容,你對這個檔案重新計算md5時就會發現。如果再有乙個第三方的認證機構,用md5還可以防止檔案作者的「抵賴」,這就是所謂的數字簽名應用。

md5還廣泛用於加密和解密技術上,在很多作業系統中,使用者的密碼是以md5值(或類似的其它演算法)的方式儲存的,使用者login的時候,系統是把使用者輸入的密碼計算成md5值,然後再去和系統中儲存的md5值進行比較,而系統並不「知道」使用者的密碼是什麼。

一些黑客破獲這種密碼的方法是一種被稱為「跑字典」的方法。有兩種方法得到字典,一種是日常蒐集的用做密碼的字串表,另一種是用排列組合方法生成的,先用md5程式計算出這些字典項的md5值,然後再用目標的md5值在這個字典中檢索。

即使假設密碼的最大長度為8,同時密碼只能是字母和數字,共26+26+10=62個字元,排列組合出的字典的項數則是p(62,1)+p(62,2)….+p(62,8),那也已經是乙個很天文的數字了,儲存這個字典就需要tb級的磁碟組,而且這種方法還有乙個前提,就是能獲得目標賬戶的密碼md5值的情況下才可以。

有興趣的讀者可以從這裡取得md5也就是rfc 1321的文字。

附:md5不可逆加密演算法的asp實現例項:位址

md5加密演算法

md5.h ifndef md5h define md5h include include void rol unsigned int s,unsigned short cx 32位數迴圈左移實現函式 void ltob unsigned int i b l互轉,接受uint型別 unsigned ...

MD5加密演算法

md5訊息摘要演算法 message digest algorithm 它對輸入的任意長度的訊息進行運算,產生乙個128位的訊息摘要。演算法原理 資料填充 填充訊息使其長度與448模512同餘 長度 448 mod 512 即時訊息長度本身已經滿足了上述長度要求也需要填充。填充方法 附乙個1在訊息後...

加密演算法 MD5

一 簡介 md5的全稱是message digest algorithm 5 資訊摘要演算法 在90年代初由mit laboratory for computer science和rsa data security inc的ronald l.rivest開發出來,經md2 md3和md4發展而來。訊...