MD5演算法的應用

2021-09-24 17:23:40 字數 1459 閱讀 6756

md5演算法的應用

對資訊產生摘要

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演算法 加密

ps 在開發的某些業務中,涉及到一些明文不太安全的時候會用到加密演算法,常用的一般有md5加密 des aes 等加密方式這裡自己了解了一下md5加密。1 md5演算法加密 也就是 資訊 摘要演算法5 就是把乙個任意長度的位元組串變換成一定長的十六進製制數字串 public static strin...

MD5演算法實現

md5.h ifndef md5 h define md5 h typedef struct md5 ctx 非線性輔助函式 define f x,y,z x y x z define g x,y,z x z y z define h x,y,z x y z define i x,y,z y x z...

MD5演算法實現

md5.h ifndef md5 h define md5 h typedef struct md5 ctx 非線性輔助函式 define f x,y,z x y x z define g x,y,z x z y z define h x,y,z x y z define i x,y,z y x z...