MD5(Message-Digest Algorithm 5)是一種常用的哈希(Hash)函數,用于確保數據的完整性和一致性。MD5算法由美國密碼學家羅納德·李維斯特(Ronald L. Rivest)設計,用來取代MD4算法。MD5算法主要適用于數字簽名應用,以防止被篡改。
MD5算法的輸出固定為128位(16字節),通常以32個十六進制數表示。它接受輸入數據,對其進行處理,并生成一個128位的哈希值,該值被認為是輸入數據的“指紋”,因為即使在輸入數據中進行了小的更改,它也會產生完全不同的哈希值。因此,MD5可以用于驗證文件的完整性,以及確保兩個文件是否相同。
MD5算法的核心是一個壓縮函數,將輸入數據分塊,并對每個塊進行處理,產生一個128位的哈希值。壓縮函數包含四個輪(Round),每輪包含16個操作,每個操作都是一個非線性的函數,它們接受三個32位的輸入參數,輸出一個32位的輸出結果。在每個輪中,壓縮函數都會使用前一輪的結果作為輸入,并將其與當前塊的數據一起處理。
MD5算法的安全性曾經被質疑,因為已經有一些攻擊方法可以生成相同的哈希值,但是在現實應用中,MD5算法仍然是一種常用的哈希函數。為了增強安全性,目前已經有一些更安全的哈希函數,例如SHA-1、SHA-256等,被廣泛應用。