上一篇文章整理了Base64算法的相關(guān)知識,嚴格來說,Base64只能算是一種編碼方式而非加密算法,這一篇要說的MD5,其實也不算是加密算法,而是一種哈希算法,即將目標文本轉(zhuǎn)化為固定長度,不可逆的字符串(消息摘要).
簡單了解
MD5(Message Digest Algorithm 5),翻譯過來是消息摘要算法第五版,按照慣例,我們推理可能也有MD2,MD3這樣名字的歷史版本..
即使完全不了解這個算法的原理,我們也可以從命名中看出一些眉道,所謂摘要,就是一個簡短的概括,像我寫過的畢業(yè)論文,上來第一部分就是摘要,它對后面長篇大論的文章做了一個簡短有力的概括,其實MD5的作用也有點這樣的味道,我們來看一段關(guān)于描述MD5算法作用的文字:
MD5的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密匙前被"壓縮"成一種保密的格式(就是把一個任意長度的字節(jié)串變換成一定長的大整數(shù)),它主要用于確保數(shù)據(jù)傳輸?shù)耐暾院鸵恢滦?
假設(shè)A要給遠方的B發(fā)送一個文本文件,有100萬字,當(dāng)B收到文件的時候,該怎么知道這個文件在傳過來的途中有沒有被篡改呢,要是有人中途截斷并篡改了文件內(nèi)容那就不太妙了,這時候MD5就派上用場了,不管多大的文件,通過MD5加密之后都會得到一個定長的字符串,一般是32位,這時候A先對文件用MD5加密一下,得到的一串密文順便也傳給B,當(dāng)B收到后文件,同樣對文件用MD5加密一下,看看得到的密文是否和A傳過來的一致,如果一致,說明這個文件是安全的.這樣就確保了數(shù)據(jù)傳輸?shù)耐暾?
事實上,我們從網(wǎng)絡(luò)上下載文件的時候,有時候下載的文件后面都有一段MD5的密文,比如 MD5(e8027a87676ea48b3a3c9b0a4d8d87a0),作用和上面我舉得例子類似(我覺得是這樣....).
MD5是一種公開的不可逆的算法,意味著是沒有辦法直接破解密文得到源數(shù)據(jù)信息的,md5可以對一個對一個任意大小的文件進行哈希運算,得到一個唯一的32位字符串.
簡單了解了MD5的功能,就可以直接看代碼了.
java代碼實現(xiàn)MD5