HMAC-MD5 是一種基於 MD5 雜湊函數的金鑰雜湊訊息驗證碼(HMAC),廣泛用於資料完整性驗證與身分認證。正確實作 HMAC-MD5 的關鍵在於遵循 RFC 2104 定義的標準演算法流程,並使用官方提供的測試向量進行驗證。
RFC 2104 附錄提供了多組已知的金鑰、資料與預期 HMAC-MD5 結果,開發者可直接拿來驗證自行撰寫或第三方庫的正確性。例如:
0x0b 重複 16 位元組"Hi There"9294727a3638bb1c13f48ef8158bfc9d/* 伪代码示意 */
void hmac_md5(const unsigned char *key, int key_len,
const unsigned char *data, int data_len,
unsigned char *output) {
// 1. 金鑰處理
// 2. 內層雜湊: MD5(key ⊕ ipad || data)
// 3. 外層雜湊: MD5(key ⊕ opad || inner_hash)
// 4. 輸出 16 位元組 output
}
若自行撰寫代碼後結果與標準向量不符,建議先檢查填充邏輯與金鑰預處理,再逐步對照 RFC 文件中的中間值除錯。