关于Uber文档,我正在尝试验证以便信任我们API中的POST。
https://developer.uber.com/docs/riders/guides/webhooks#security
为此,我需要在sha256中使用client_secret进行加密。
我正在用Go语言编程。
我的问题是,我不能拥有与Uber签名相同的加密消息。
这是使用的代码:
package main
import (
"fmt"
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
)
func main() {
secret := "mySecretCode"
msg := `{"event_id":"af4189d4-6a4c-48b5-ab83-8a59d6b03284","resource_href":"https://sandbox-api.uber.com/v1/requests/f09bdc07-509b-4d91-859c-8883ac7fc04a","meta":{"status":"processing","rider_id":"8LSgK24vbx3bcLWThqQyMI_1T_ErGeb1SIHAO3wHX4ycPNvKGf_WsNf14PgVW8el7cBA_lemjMxKkcngZk945K_fCMXQARIfNZ8QOv7VWoQnwpSmUSKUgnYE1WEk-aHyrA==","user_id":"eb0e5df4-3d65-40a0-aff7-40bf06e15727","resource_id":"f09bdc07-509b-4d91-859c-8883ac7fc04a"},"event_type":"requests.status_changed","event_time":1554990665}`
fmt.Printf("Secret: %s Data: %s\n", secret, msg)
h := hmac.New(sha256.New, []byte(secret))
h.Write([]byte(msg))
encodedMsg := hex.EncodeToString(h.Sum(nil))
fmt.Println(encodedMsg)
}
我期望这样:
3795f9ad1c5fe0ae4cd0d10d7a60ccb9f4409c3ae23eb0d0e448fb509f994faf
但是我得到了:
350b4ed376e3e4a490dfa7ed4701da7be46e9454d5893bc63f5040bffde19fa8
代码如下:https://play.golang.org/p/PHPFIDxXA8T
知道为什么吗?