MD5簡介
MD5即Message-Digest Algorithm 5(信息-摘要算法),屬於摘要算法,是一個不可逆過程,就是無論多大數據,經過算法運算后都是生成固定長度的數據,結果使用16進制進行顯示的128bit的二進制串。通常表示為32個十六進制數連成的字符串。
MD5有什么用?
用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實現。
更多用在文檔校驗上,用來生成密鑰檢測文檔是否被篡改。
理論上MD5是不可逆的,而且MD5本來也不是作加密使用,而是用來校驗數據的完整性。譬如,我們用迅雷下載電影,就有個MD5校驗:
平時,我們在雲盤上,秒傳文件,可以通過MD5校驗實現:
- 客戶端在上傳文件之前將文件的MD5碼上傳到服務器
- 服務器端判斷是否已存在此MD5碼(MD5校驗),如果存在,說明該文件已存在,則此文件無需再上傳,在此文件的計數器加1,說明此文件多了一個用戶共用
- 如果服務器沒有此MD5碼,說明上傳的文件是新文件,則真正上傳此文件
只是因為其不可逆且穩定、快速的特點,被廣泛用於對明文密碼的加密。
但是簡單密碼來說,破解者完全可以將一定范圍內的密碼字典全部計算出來之后存為數據庫,之后直接查詢進行破解。
用戶重要信息(如密碼)不應該明文保存到數據庫,可以通過MD5加密后再保存:
所謂加密:
加密技術是最常用的安全保密手段,利用技術手段把重要的數據變為亂碼(加密)傳送,到達目的地后再用相同或不同的手段還原(解密)。
加密技術包括兩個元素:算法和密鑰;算法是將普通的信息或者可以理解的信息與一串數字結合,產生不可理解的密文的步驟;密鑰是用來對數據進行編碼和解密的一種算法。
在安全保密中,可通過適當的鑰加密技術和管理機制來保證網絡的信息通信安全。
所謂哈希:
Hash,一般翻譯做"散列”,也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。
這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。
簡單的說就是一種將任意長度的消息壓縮到某一固定長度的信息摘要的函數。
HASH主要用於信息安全領域中加密算法,他把一些不同長度的信息轉化成雜亂的128位的編碼里,叫做HASH值. 也可以說,hash就是找到一種數據內容和數據存放地址之間的映射關系。
Hash算法在信息安全方面的應用主要體現在以下的3個方面:
1) 文件校驗
我們比較熟悉的校驗算法有奇偶校驗和CRC校驗,這2種校驗並沒有抗數據篡改的能力,它們一定程度上能檢測並糾正數據傳輸中的信道誤碼,但卻不能防止對數據的惡意破壞。MD5 Hash算法的"數字指紋"特性,使它成為目前應用最廣泛的一種文件完整性校驗和(Checksum)算法,不少Unix系統有提供計算md5 checksum的命令。
2) 數字簽
Hash 算法也是現代密碼體系中的一個重要組成部分。由於非對稱算法的運算速度較慢,所以在數字簽名協議中,單向散列函數扮演了一個重要的角色。對 Hash 值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對文件本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。
3) 鑒權協議
鑒權協議又被稱作"挑戰--認證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。
應用:1.一致性驗證;2.數字簽名;3.安全訪問驗證。