md5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461
這就是tanajiya.tar.gz檔案的數字簽名。md5將整個檔案當作乙個大文字資訊,通過其不可逆的字串變換演算法,產生了這個唯一的md5資訊摘要。為了讓讀者朋友對md5的應用有個直觀的認識,筆者以乙個比方和乙個例項來簡要描述一下其工作過程:
大家都知道,地球上任何人都有自己獨一無二的指紋,這常常成為公安機關鑑別罪犯身份最值得信賴的方法;與之類似,md5就可以為任何檔案(不管其大小、格式、數量)產生乙個同樣獨一無二的「數字指紋」,如果任何人對檔名做了任何改動,其md5值也就是對應的「數字指紋」都會發生變化。
md5的典型應用是對一段message(位元組串)產生fingerprint(指紋),以防止被「篡改」。舉個例子,你將一段話寫在乙個叫 readme.txt檔案中,並對這個readme.txt產生乙個md5的值並記錄在案,然後你可以傳播這個檔案給別人,別人如果修改了檔案中的任何內容,你對這個檔案重新計算md5時就會發現(兩個md5值不相同)。如果再有乙個第三方的認證機構,用md5還可以防止檔案作者的「抵賴」,這就是所謂的數字簽名應用。
md5還廣泛用於作業系統的登陸認證上,如unix、各類bsd系統登入密碼、數字簽名等諸多方。如在unix系統中使用者的密碼是以md5(或其它類似的演算法)經hash運算後儲存在檔案系統中。當使用者登入的時候,系統把使用者輸入的密碼進行md5 hash運算,然後再去和儲存在檔案系統中的md5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統在並不知道使用者密碼的明碼的情況下就可以確定使用者登入系統的合法性。這可以避免使用者的密碼被具有系統管理員許可權的使用者知道。md5將任意長度的「位元組串」對映為乙個128bit的大整數,並且是通過該128bit反推原始字串是困難的,換句話說就是,即使你看到源程式和演算法描述,也無法將乙個md5的值變換回原始的字串,從數學原理上說,是因為原始的字串有無窮多個,這有點象不存在反函式的數學函式。所以,要遇到了md5密碼的問題,比較好的辦法是:你可以用這個系統中的md5()函式重新設乙個密碼,如admin,把生成的一串密碼的hash值覆蓋原來的hash值就行了。
正是因為這個原因,現在被黑客使用最多的一種破譯密碼的方法就是一種被稱為"跑字典"的方法。有兩種方法得到字典,一種是日常蒐集的用做密碼的字串表,另一種是用排列組合方法生成的,先用md5程式計算出這些字典項的md5值,然後再用目標的md5值在這個字典中檢索。我們假設密碼的最大長度為8位位元組(8 bytes),同時密碼只能是字母和數字,共26+26+10=62個字元,排列組合出的字典的項數則是p(62,1)+p(62,2)….+p(62,8),那也已經是乙個很天文的數字了,儲存這個字典就需要tb級的磁碟陣列,而且這種方法還有乙個前提,就是能獲得目標賬戶的密碼md5值的情況下才可以。這種加密技術被廣泛的應用於unix系統中,這也是為什麼unix系統比一般作業系統更為堅固乙個重要原因。
MD5加密工具
問題引出 md5演算法加密使用者專案操作中我們對一些敏感資訊進行加密,需要注意的是,md5加密是不可逆的。工具類 寫乙個md5演算法,執行結果與mysql的md5 函式相同 將明文密碼轉成md5密碼 123456 e10adc3949ba59abbe56e057f20f883e public cla...
MD5加密工具類
這是乙個個人認為非常好用的使用md5 salt加密的工具類,一部分 由網上搜尋而得,一部分自己修改新增之後而得。使用這個工具類,非常簡單,從前台拿到密碼passwd,直接hexutil.getencryptedpwd passwd 就可以返回乙個長度為56的字串,可以用來儲存到 資料庫中,相反,登入...
MD5加密工具類
md5資訊摘要演算法 md5 message digest algorithm 一種被廣泛使用的密碼雜湊函式,可以產生出乙個128位 16位元組 的雜湊值 hash value 用於確保資訊傳輸完整一致。md5由美國密碼學家羅納德 李維斯特 ronald linn rivest 設計,於1992年公...