MD5概念:
MD5是message-digest algorithm 5(信息-摘要算法)的縮寫,被廣泛用于加密和解密技術(shù)上,它可以說是文件的“數(shù)字指紋”。任何一個文件,無論是可執(zhí)行程序、圖像文件、臨時文件或者其他任何類型的文件,也不管它體積多大,都有且只有一個獨一無二的MD5信息值,并且如果這個文件被修改過,它的MD5值也將隨之改變。因此,我們可以通過對比同一文件的MD5值,來校驗這個文件是否被“篡改”過。
MD5文件傳輸:
當(dāng)我們下載了一個軟件以后,如果想知道下載的這個軟件和網(wǎng)站的原始文件是否一模一樣,就可以給自己下載的文件做個MD5校驗。如果得到的MD5值和網(wǎng)站公布的相同,可確認(rèn)所下載的文件是完整的。如有不同,說明你下載的文件是不完整的:要么就是在網(wǎng)絡(luò)下載的過程中出現(xiàn)錯誤,要么就是此文件已被別人修改。為防止他人更改該文件時放入病毒,最好不要使用。(一般使用MD5計算工具(可以從網(wǎng)上下)載檢驗后和軟件網(wǎng)站公布得MD5碼進(jìn)行比對)
MD5密碼加密:
MD5也可以應(yīng)用在對密碼得加密,那么加密后有什么作用呢?和加密前有什么區(qū)別呢?
1.因為是不可逆的,所以在數(shù)據(jù)庫里面看到的密碼是無用的,你不是檢驗用戶的密碼,而是檢驗用戶輸入的密碼經(jīng)md5加密以后和數(shù)據(jù)庫內(nèi)的是否相符
2.你不希望你的郵件服務(wù)器的管理員知道你的信用卡密碼吧?
密碼之所以用MD5加密,就是為了不可解密。
正常有良心的設(shè)計,不能讓用戶的密碼可以解開,因為人的懶惰是天生的,所以大部份的人只會用兩三個常用密碼。
所以外國的密碼設(shè)計是這樣的,你輸入一個密碼(明文),用MD5加密后保存在數(shù)據(jù)庫中。
下次要驗證密碼也好辦,把用戶的輸入用MD5加密后,與數(shù)據(jù)庫中加密過的數(shù)據(jù)對比,相同的話,就表示密碼正確。
這樣的設(shè)計還有另外一個好處,就是可以一定程度上防止SQL注入。(這個話題不知道可以自己GOOGLE)
網(wǎng)上的暴力破解其實也是利用這個原理,
他把許多已知明文的,用MD5加密后,保存起來。你要反查,他實際上是在數(shù)據(jù)庫中查找加密過的,是否有與你
查詢的MD5串相同,如果相同的話,就把明文給你看。
這樣的設(shè)計表達(dá)的是一個互相尊重的理念,系統(tǒng)管理員/開發(fā)員是無權(quán)知道用戶的密碼的。
如果用戶忘記密碼,管理員只能用重置密碼的方式。