MD5算法的必要性以及實(shí)際應(yīng)用場(chǎng)景
MD5算法為計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù),用以提供消息的完整性保護(hù)。用于確保信息傳輸完整一致,是計(jì)算機(jī)廣泛使用的雜湊算法之一。
MD5算法具有以下特點(diǎn):
1、壓縮性:任意長(zhǎng)度的數(shù)據(jù),算出的MD5值長(zhǎng)度都是固定的。
2、容易計(jì)算:從原數(shù)據(jù)計(jì)算出MD5值很容易。
3、抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng),哪怕只修改1個(gè)字節(jié),所得到的MD5值都有很大區(qū)別。
4、弱抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。
5、強(qiáng)抗碰撞:想找到兩個(gè)不同的數(shù)據(jù),使它們具有相同的MD5值,是非常困難的。
根據(jù)以上特點(diǎn)衍生出來(lái)可以供我們使用的特性:
方便存儲(chǔ):MD5加密出來(lái)都是32位的字符串,能夠給定固定大小的空間存儲(chǔ),傳輸,驗(yàn)證
文件加密:MD5算法運(yùn)用在文件加密上很有優(yōu)勢(shì),應(yīng)為只需要32為字符串就能對(duì)一個(gè)巨大的文件進(jìn)行驗(yàn)證完整性
不 可 逆:MD5加密出來(lái)只會(huì)截取末尾32位,具有良好的安全性,如果是對(duì)于參數(shù)加密很難偽造MD5
加密損耗低:MD5算法加密對(duì)于性能的消耗微乎其微(我獲得的結(jié)果是:0。001毫秒)
MD5算法的實(shí)際應(yīng)用
用戶密碼
對(duì)于用戶密碼加密最高境界就是:別人獲得你數(shù)據(jù)庫(kù)的用戶資料別人也沒(méi)有辦法獲知密碼。要達(dá)到就要有一套復(fù)雜的加密規(guī)則,一般常用的規(guī)則比如:MD5(MD5(用戶名+用戶密碼)+MD5(KEY+項(xiàng)目名+公司名)) 這樣可以避免和別人碰庫(kù)不排除別人用MD5算法來(lái)攻擊你的服務(wù)器來(lái)匹配。當(dāng)然還可以自定很多種加密方法,就算知道加密方法也幾乎無(wú)法去推送出用戶原密碼是什么。
請(qǐng)求參數(shù)校驗(yàn)
對(duì)于服務(wù)器來(lái)言排除系統(tǒng)問(wèn)題最大的問(wèn)題就是害怕請(qǐng)求被攔截,攔截修改之后就有很多漏洞的可能性了。為了避免被攔截,參數(shù)被修改這種文件的常用方法就是對(duì)請(qǐng)求參數(shù)進(jìn)行校驗(yàn),就算攔截了請(qǐng)求參數(shù)修改了只要模擬不出MD5加密出來(lái)的值,在服務(wù)器過(guò)濾器直接就會(huì)進(jìn)行攔截。
文件校驗(yàn)
對(duì)于一些圖片已經(jīng)一些很小很小的文件來(lái)說(shuō)可以不用MD5算法校驗(yàn)應(yīng)為基本上都是一次請(qǐng)求就完成了上傳,而且顯示的時(shí)候也不需要驗(yàn)證圖片完不整。如果有一個(gè)5MB的文件 客戶端把它分割成5份1MB的文件在上傳的時(shí)候上傳兩個(gè)MD5值一個(gè)是當(dāng)前上傳的片1MB文件流的MD5,還有一個(gè)就是拼接之后的MD5通過(guò)這樣的方式能保證文件的完整性。





