2013-07-12 35 views
2

我需要使用HMAC-MD5算法對一些數據進行數字簽名。HMAC-MD5簽名 - 將密鑰從十六進制轉換爲字節格式php

我有鑰匙和對象的樣本串(而我知道的十六進制的標誌應該是什麼。

我的問題是,當我使用hash_hmac PHP函數它生成的關鍵是它應該是什麼樣的不同。

的指令是:

  1. 翻譯HMAC密鑰從十六進制字節格式 - 不知道該怎麼做

  2. 使用HMAC-MD5程序字符串基於商戶的HMAC 關鍵 - 該位是罰款

  3. 從字節十六進制格式轉換籤名,並作爲 值與參數符號關聯 - 不知道是什麼在這裏做任何

我已經使用這個用於步驟1)$鍵2 =包( 「H *」,$鍵) 嘗試這第2步)BIN2HEX($符號)的別沒有希望的工作。

我發現唯一在線的HMAC-MD5發生器產生了正確的符號: http://membres.multimania.fr/brudav/hash.php選擇'hexa'時。我顯然不知道這是如何實現的。

任何人都可以給我任何意見嗎?

+0

'hash_hmac'不生成密鑰。它散列輸入數據,默認情況下以十六進制字符串的形式返回輸出。使用'raw_output'參數來獲取二進制輸出。 - 顯示您的代碼以及結果與預期輸出的不同之處。 – mario

回答

2
$hmac = hash_hmac('md5', $data, hex2bin($key)); 

應該給出與在線計算器相同的答案。

  • hex2bin轉換從十六進制格式爲二進制格式(步驟1),該期望hash_hmac的關鍵。你曾嘗試過的pack也應該爲此目的工作。
  • hash_hmac與默認$raw_output = false,將產生一個十六進制輸出(步驟2和3組合)。
+0

先生,非常感謝你! –

相關問題