首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

HMAC-MD5 算法驗證:標準測試向量與實作範例

     編輯:程式設計綜合問答

HMAC-MD5 簡介

HMAC-MD5 是一種基於 MD5 雜湊函數的金鑰雜湊訊息驗證碼(HMAC),廣泛用於資料完整性驗證與身分認證。正確實作 HMAC-MD5 的關鍵在於遵循 RFC 2104 定義的標準演算法流程,並使用官方提供的測試向量進行驗證。

標準測試向量 (RFC 2104)

RFC 2104 附錄提供了多組已知的金鑰、資料與預期 HMAC-MD5 結果,開發者可直接拿來驗證自行撰寫或第三方庫的正確性。例如:

  • 金鑰: 0x0b 重複 16 位元組
  • 資料: "Hi There"
  • 預期 HMAC-MD5: 9294727a3638bb1c13f48ef8158bfc9d

常見實作錯誤與驗證步驟

  1. 確認金鑰長度處理:超過區塊大小 (64 位元組) 時需先雜湊縮減。
  2. 內部/外部填充 (ipad/opad) 必須完全符合規範 (0x36 / 0x5c)。
  3. 使用 RFC 2104 附錄的測試向量逐組比對,若全部通過則實作極高機率正確。

程式碼片段參考 (C 語言風格)

/* 伪代码示意 */
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 文件中的中間值除錯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved