HMAC(Hash-based Message Authentication Code)是一種基於哈希函式的訊息認證碼算法,它使用密鑰和哈希函式來生成訊息的固定長度認證碼,以確保訊息的完整性和認證性。HMAC的安全性建立在所使用的哈希算法的基礎上,並且要求通信雙方共享一個密鑰。HMAC算法可以與多種哈希函式配合使用,如MD5、SHA-1等,而且它的輸出長度與所使用的哈希函式長度一致。
HMAC的運算過程包括使用一個密鑰和一個訊息作為輸入,通過一個特定的算法生成訊息摘要作為輸出。在驗證訊息時,除了原始輸入數據外,還需要提供用於生成HMAC的密鑰。HMAC算法不僅可以用於加密和數字簽名,還可以用於驗證訊息的完整性。
HMAC算法的一個特點是它允許將密鑰混入哈希計算過程中,這使得即使使用相同的哈希算法,不同的密鑰也會產生不同的哈希值。這種特性使得HMAC比僅使用哈希函式更安全,因為它防止了彩虹表攻擊,即通過預先計算哈希值來反推原始數據的攻擊。
HMAC算法在IPSec和其他網路協定中得到了廣泛套用,並已成為Internet安全標準之一。使用HMAC時,通常不會自己指定密鑰,而是通過密鑰生成器生成一個安全的隨機密鑰,以確保全全性。