MD5算(suàn)法是一種非常優秀的加密算(suàn)法。 MD5加密算(suàn)法特點靈活性、不可(kě)恢複性。
介紹MD5加密算(suàn)法基本情況 MD5的全稱是Message-Digest Algorithm 5在90年代初由MIT的計(jì)算(suàn)機科學實驗室和(hé)RSA Data Security Inc發明(míng)經MD2、MD3和(hé)MD4發展而來(lái)。
Message-Digest泛指字節串(Message)的Hash變換就是把一個(gè)任意長度的字節變換成一定長的大(dà)整數(shù)。請(qǐng)注意我使用了"字節串"而不是"字符串"這個(gè)詞是因為(wèi)這種變換隻與字節的值有(yǒu)關與字符集或編碼方式無關。
MD5将任意長度的"字節串"變換成一個(gè)128bit的大(dà)整數(shù)并且它是一個(gè)不可(kě)逆的字符串變換算(suàn)法換句話(huà)說就是即使你(nǐ)看到源程序和(hé)算(suàn)法描述也無法将一個(gè)MD5的值變換回原始的字符串從數(shù)學原理(lǐ)上(shàng)說是因為(wèi)原始的字符串有(yǒu)無窮多(duō)個(gè)這有(yǒu)點象不存在反函數(shù)的數(shù)學函數(shù)。
MD5的典型應用是對一段Message(字節串)産生(shēng)fingerprint(指紋)以防止被"篡改"。舉個(gè)例子你(nǐ)将一段話(huà)寫在一個(gè)叫readme.txt文件中并對這個(gè)readme.txt産生(shēng)一個(gè)MD5的值并記錄在案然後你(nǐ)可(kě)以傳播這個(gè)文件給别人(rén)别人(rén)如果修改了文件中的任何內(nèi)容你(nǐ)對這個(gè)文件重新計(jì)算(suàn)MD5時(shí)就會(huì)發現。
如果再有(yǒu)一個(gè)第三方的認證機構用MD5還(hái)可(kě)以防止文件作(zuò)者的"抵賴"這就是所謂的數(shù)字簽名應用。
MD5還(hái)廣泛用于加密和(hé)解密技(jì)術(shù)上(shàng)在很(hěn)多(duō)操作(zuò)系統中用戶的密碼是以MD5值(或類似的其它算(suàn)法)的方式保存的用戶Login的時(shí)候系統是把用戶輸入的密碼計(jì)算(suàn)成MD5值然後再去和(hé)系統中保存的MD5值進行(xíng)比較而系統并不"知道(dào)"用戶的密碼是什麽。
一些(xiē)黑(hēi)客破獲這種密碼的方法是一種被稱為(wèi)"跑字典"的方法。有(yǒu)兩種方法得(de)到字典一種是日常搜集的用做(zuò)密碼的字符串表另一種是用排列組合方法生(shēng)成的先用MD5程序計(jì)算(suàn)出這些(xiē)字典項的MD5值然後再用目标的MD5值在這個(gè)字典中檢索。
即使假設密碼的最大(dà)長度為(wèi)8同時(shí)密碼隻能是字母和(hé)數(shù)字共26+26+10=62個(gè)字符排列組合出的字典的項數(shù)則是P(62,1)+P(62,2)….+P(62,8)那(nà)也已經是一個(gè)很(hěn)天文的數(shù)字了存儲這個(gè)字典就需要TB級的磁盤組而且這種方法還(hái)有(yǒu)一個(gè)前提就是能獲得(de)目标賬戶的密碼MD5值的情況下才可(kě)以。
在很(hěn)多(duō)電(diàn)子商務和(hé)社區(qū)應用中管理(lǐ)用戶的Account是一種最常用的基本功能盡管很(hěn)多(duō)Application Server提供了這些(xiē)基本組件但(dàn)很(hěn)多(duō)應用開(kāi)發者為(wèi)了管理(lǐ)的更大(dà)的靈活性還(hái)是喜歡采用關系數(shù)據庫來(lái)管理(lǐ)用戶懶惰的做(zuò)法是用戶的密碼往往使用明(míng)文或簡單的變換後直接保存在數(shù)據庫中因此這些(xiē)用戶的密碼對軟件開(kāi)發者或系統管理(lǐ)員來(lái)說可(kě)以說毫無保密可(kě)言本文的目的是介紹MD5的Java Bean的實現同時(shí)給出用MD5來(lái)處理(lǐ)用戶的Account密碼的例子這種方法使得(de)管理(lǐ)員和(hé)程序設計(jì)者都無法看到用戶的密碼盡管他們可(kě)以初始化它們。但(dàn)重要的一點是對于用戶密碼設置習慣的保護。
本文由重慶網站(zhàn)建設-重慶建網站(zhàn)-中技(jì)互聯:www.zjcoo.com
如沒特殊注明(míng),文章均為(wèi)中技(jì)互聯原創,轉載請(qǐng)注明(míng)來(lái)自www.zjcoo.com