MD系列算法是信息摘要三大算法中的一種,全稱:Message Digest算法,按照規範版本分爲MD二、MD四、MD5三種算法,目前最經常使用的是MD5版本算法。算法
1989年,是由著名的非對稱算法RSA發明人之一--麻省理工學院教授羅納德-裏維斯特開發的;這個算法首先對信息進行數據補位,使信息的字節長度是16的倍數,再以16位的檢驗和做爲補充信息追加到原信息的末尾。最後根據這個新產生的信息計算出一個128位的散列值,MD2算法由此誕生。數據庫
1990年,在MD2基礎上發展出MD4算法,1991年,MD4的創始人開發出安全
MD5算法:ide
(1)和MD2同樣,仍然對信息進行補位,可是補位時要添加448個字節, 變爲512的倍數。工具
(2)仍對信息作散列,獲取一個128位的散列值,得出MD4值。網站
MD4的算法影響很大,好比MD五、SHA-一、Ripe-MD系列都是從MD4基礎上衍生出來的。加密
(1)MD5的特色3d
長度固定:無論多長的字符串,加密後長度都是同樣長。 blog
做用:方便平時信息的統計和管理。ip
詳解:通過MD5加密生成一個固定長度爲128bit的串。由於128位0 和1的二進制串表達不友好,所以轉化爲了16進制,128/4 = 32位的 16進制。將32位去掉前8位和後8位獲得的是16位。所以會有MD5的 32位 和16位加密說法。
(2)易計算
字符串和文件加密的過程是容易的。
做用:開發者很容易理解和作出加密工具。
(3)細微性
一個文件,無論多大,小到幾k,大到幾G,你只要改變裏面某個字符,那麼 都會致使MD5值改變。
做用:不少軟件和應用在網站提供下載資源,其中包含了對文件的MD5碼, 用戶下載後只須要用工具測一下下載好的文件,經過對比就知道該文件是 否有過更改變更。
(4)不可逆性
你明明知道密文和加密方式,你卻沒法反向計算出原密碼。
做用:基於這個特色,不少安全的加密方式都是用到,大大提升了數據的 安全性。
不可逆的緣由:摘要是部份內容,所以由MD5的密文和加密方式會得 到不少明文,而沒法肯定明文。
一個原始數據,只對應一個md5值;可是一個md5值,可能對應多個原始數據。
補充:MD5經常使用於字符串和文件的加密。
關於撞庫破解:這是機率極低的破解方法,原理就是:
(1)創建一個大型的數據庫,把平常的各個語句,經過MD5加密成爲密文, 不斷的積累大量的句子,放在一個龐大的數據庫裏。
(2)好比一我的拿到了別人的密文,想去查詢真實的密碼,就須要那這個 密文去到提供這個數據庫的公司網站去查詢。
這就是撞庫的概念。
好比個人銀行密碼是"12345"
(1)獲得的MD5是:827ccb0eea8a706c4c34a16891f84e7b
(2)一我的截取到這個密文,那麼經過撞庫確定容易撞出12345.
(3)咱們要作的就是加鹽,銀行密碼仍是"12345",而後我把銀行密碼加 上我特定的字符串才計算MD5。
因此密碼仍是那個密碼,可是變成求"12345密碼加密987"的MD5值,而後 再獲得MD5,那麼這個MD5起碼能夠確認那個數據庫不會有。
先分析MD5返回16位長度算法:
開始分析MD532方法,這裏惟一其餘代碼都是同樣的, 惟一的區別是最 後的返回沒有進行截取,而是所有轉換。
補充:協議分析如何找MD5算法?degist()方法、update()這些固定方 法。
一、介紹MD5算法的相關概念了以及特色。
二、分析MD5算法代碼的實現。