HMAC(Hash-based Message Authentication Code,基於哈希的訊息認證碼)是一種用來驗證訊息完整性及其來源的加密技術。它使用密鑰和哈希函數(如 SHA-256)來產生一個固定長度的輸出,確保訊息在傳輸過程中未被篡改並且來自合法的發送者。
HMAC的生成過程:
選擇哈希函數:選擇一個加密哈希函數,如 MD5、SHA-1、SHA-256 等。
準備密鑰:準備一個密鑰,通常是隨機生成的,並且其長度與哈希函數的要求一致。
處理密鑰長度:
如果密鑰長度超過哈希函數的塊長(如 SHA-256 的塊長是 64 字節),則將密鑰通過哈希函數壓縮至所需長度。
如果密鑰長度不足哈希函數的塊長,則對其進行填充,通常使用零填充。
計算 HMAC:
內部哈希:將密鑰與預定義的內部填充值(如 0x36 重複的字節)進行異或操作,再與訊息進行連接,計算哈希值。
外部哈希:將密鑰與預定義的外部填充值(如 0x5c 重複的字節)進行異或操作,再將內部哈希結果與此操作結果進行哈希。