我正在嘗試連接到一個 API,該 API 對 API 使用過時的 hmac 哈希身份驗(yàn)證機(jī)制。舉個例子:$signature = hash_hmac('sha256', $string_to_sign, $api_sec);與 Go 中生成的相比:h := hmac.New(sha256.New, []byte(authSecret))h.Write([]byte(stringToSign))signature := hex.EncodeToString(h.Sum(nil))當(dāng)我使用相同stringToSign($string_to_sign)且相同的authSecret($api_sec)簽名時,Go 結(jié)果生成的簽名作為 API 的無效簽名。但是,如果我使用 PHP 函數(shù)創(chuàng)建相同的內(nèi)容,它就可以正常工作。我對去哪里看有點(diǎn)迷茫。
1 回答

慕尼黑8549860
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個贊
您的輸入數(shù)據(jù)一定有問題。
使用以下 PHP:
echo hash_hmac('sha256', 'data', 'key');
和下面的Go:
h := hmac.New(sha256.New, []byte("key"))
h.Write([]byte("data"))
signature := hex.EncodeToString(h.Sum(nil))
fmt.Println(signature)
我得到相同的結(jié)果5031fe3d989c6d1537a013fa6e739da23463fdaec3b70137d828e36ace221bd0
- 1 回答
- 0 關(guān)注
- 258 瀏覽
添加回答
舉報(bào)
0/150
提交
取消