MD5加密算法的應(yīng)用

MD5加密算法由于其具有較好的安全性,加之商業(yè)上也可以免費(fèi)使用該加密算法,因此MD5加密算法被廣泛使用。MD5加密算法主要運(yùn)用在密碼管理、電子簽名以及垃圾郵件的篩選等方面,今天我們就這幾方面的應(yīng)用給大家詳細(xì)的介紹一下。

MD5加密算法應(yīng)用一、用于密碼管理

例如,當(dāng)我們需要保存某些密碼信息以用于身份確認(rèn)時(shí),如果直接將密碼信息以明碼方式保存在數(shù)據(jù)庫(kù)中,不使用任何保密措施,系統(tǒng)管理員就很容易能得到原來(lái)的密碼信息,這些信息一旦泄露,密碼也很容易被破譯。為了增加安全性,有必要對(duì)數(shù)據(jù)庫(kù)中需要給保密的文件加密,這樣,即使有人得到了整個(gè)數(shù)據(jù)庫(kù),如果沒有解密算法,也不能得到原來(lái)的密碼信息。

MD5加密算法可以很好地解決這個(gè)問題,因?yàn)樗梢詫⑷我忾L(zhǎng)度的輸入串經(jīng)過計(jì)算得到固定長(zhǎng)度的輸出,而且只有在明文相同的情況下,才能等到相同的密文,并且這個(gè)算法是不可逆的,即便得到了加密以后的密文,也不可能通過解密算法反算出明文。這樣就可以把用戶的密碼以MD5值(或類似的其它算法)的方式保存起來(lái),用戶注冊(cè)的時(shí)候,系統(tǒng)把用戶輸入的密碼計(jì)算成mMD5值,然后再去和系統(tǒng)中保存的MD5值進(jìn)行比較,如果密文相同,就可以認(rèn)定密碼是正確的,否則密碼錯(cuò)誤。

通過這樣的步驟,系統(tǒng)在并不知道用戶密碼明碼的情況下就可以確定用戶登錄系統(tǒng)的合法性。這樣不但可以避免用戶的密碼被具有系統(tǒng)管理員權(quán)限的用戶知道,而且還在一定程度上增加了密碼被破解的難度。

MD5加密算法應(yīng)用二、用于電子簽名

MD5加密算法還可以作為一種電子簽名的方法來(lái)使用,使用MD5加密算法就可以為任何文件(不管其大小、格式、數(shù)量)產(chǎn)生一個(gè)獨(dú)一無(wú)二的“數(shù)字指紋”,借助這個(gè)“數(shù)字指紋”,通過檢查文件前后MD5值是否發(fā)生了改變,就可以知道源文件是否被改動(dòng)。

我們?cè)谙螺d軟件的時(shí)候經(jīng)常會(huì)發(fā)現(xiàn),軟件的下載頁(yè)面上除了會(huì)提供軟件的下載地址以外,還會(huì)給出一串長(zhǎng)長(zhǎng)的字符串。這串字符串其實(shí)就是該軟件的MD5值,它的作用就在于下載該軟件后,對(duì)下載得到的文件用專門的軟件(如windows md5 check等)做一次MD5校驗(yàn),以確保我們獲得的文件與該站點(diǎn)提供的文件為同一文件。

利用MD5加密算法來(lái)進(jìn)行文件校驗(yàn)的方案被大量應(yīng)用到軟件下載站、論壇數(shù)據(jù)庫(kù)、系統(tǒng)文件安全等方面。

MD5加密算法應(yīng)用三、用于垃圾郵件的篩選

在電子郵件使用越來(lái)越普遍的情況下,可以利用MD5加密算法在郵件接收服務(wù)器上進(jìn)行垃圾郵件的篩選,以減少此類郵件的干擾,具體思路如下:

1、建立一個(gè)郵件MD5值資料庫(kù),分別儲(chǔ)存郵件的MD5值、允許出現(xiàn)的次數(shù)(假定為3)和出現(xiàn)次數(shù)(初值為零)。

2、對(duì)每一封收到的郵件,將它的正文部分進(jìn)行MD5計(jì)算,得到MD5值,將這個(gè)值在資料庫(kù)中進(jìn)行搜索。

3、如未發(fā)現(xiàn)相同的MD5值,說(shuō)明此郵件是第一次收到,將此MD5值存入資料庫(kù),并將出現(xiàn)次數(shù)置為1,轉(zhuǎn)到第五步。

4、如發(fā)現(xiàn)相同的MD5值,說(shuō)明收到過同樣內(nèi)容的郵件,將出現(xiàn)次數(shù)加1,并與允許出現(xiàn)次數(shù)相比較,如小于允許出現(xiàn)次數(shù),就轉(zhuǎn)到第五步。否則中止接收該郵件。結(jié)束。

5、接收該郵件。

6、結(jié)束。

小知識(shí)之MD5加密算法:

MD5就是采用單向加密的加密算法,對(duì)于MD5而言,有兩個(gè)特性是很重要的,第一是任意兩段明文數(shù)據(jù),加密以后的密文不能是相同的;第二是任意一段明文數(shù)據(jù),經(jīng)過加密以后,其結(jié)果必須永遠(yuǎn)是不變的。前者的意思是不可能有任意兩段明文加密以后得到相同的密文,后者的意思是如果我們加密特定的數(shù)據(jù),得到的密文一定是相同的。