2011-11-15 77 views
0

在API出現問題時,我承認它已損壞,但我不知道 - 有人可能會看到我做錯了什麼。使用php生成簽名的問題

這是他們所要求的內容作爲URL的一部分 - 由這形成簽名: 十六進制編碼的MD5(鍵+祕密+時間戳)

這就是我給他們這是失敗:

$key = 'xxxxxxxxxxxxxxxxxx'; 
$secret = 'DeMxxxxxxxxxw'; 
$timestamped = $_SERVER['REQUEST_TIME']; 
$signature = md5($key + $secret + $timestamped); 

所以,我做錯了什麼,或者他們沒有和我一起玩嗎?

+0

您是否考慮過第三種可能性:密鑰,祕密或時間戳不正確? –

+0

md5's非常具體,這是他們的全部目的。有人(你?api?)想要檢查他們對你的MD5的價值,看看他們是否匹配。所以我的猜測是,您需要將時間存儲在某個地方,以便稍後參考,或者您需要使用從API獲取的時間戳。 – toon81

回答

3

也許你想使用.(串聯),而不是+(總和)

$signature = md5($key . $secret . $timestamped); 
+0

太棒了 - 得到了回覆。感謝您指出顯而易見的:) –

2

我想你的意思是將字符串與.連接起來,而不是用+的數字加上。

$signature = md5($key . $secret . $timestamped);

1

在PHP連接運算符是 '',而不是 '+'

1

待辦事項你真的想將這些添加到一起,或者想要連接它們嗎?

// Adding 
$signature = md5($key + $secret + $timestamped); 
// Concatenating 
$signature = md5($key . $secret . $timestamped);