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