加密消息的好方法是什么(等同于来自Webhooks的Uber签名)

时间:2019-04-10 14:38:01

标签: go uber-api

关于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

知道为什么吗?

0 个答案:

没有答案