去朗生成hmac

我是新来的语言,我需要用go语言创build一个Hmac。 我在nodejs中创build了一个Hmac,需要用go语言生成相同的Hamc。 尝试下面的代码,但得到完全不同的输出。 我不知道我做错了什么。 这是我的尝试

package main import ( "crypto/hmac" "crypto/sha256" "encoding/base64" "fmt" ) func ComputeHmac256(message string, secret string) string { key := []byte(secret) h := hmac.New(sha256.New, key) h.Write([]byte(message)) return base64.StdEncoding.EncodeToString(h.Sum(nil)) } func main() { fmt.Println(ComputeHmac256("sms1", "b5fb5b3a65b8429693c3a029308e2e46")) } Output: JVN7kUPFL0aQ09lIH4YOsFJA3A2faqTuu6zIaYo61VI= 

需要去下面的nodejs代码

 var crypto = require('crypto'), text = 'sms1', key = 'b5fb5b3a65b8429693c3a029308e2e46' var hash = crypto.createHmac('sha256', key) hash.update(text) var value = hash.digest('hex') // Output 25537b9143c52f4690d3d9481f860eb05240dc0d9f6aa4eebbacc8698a3ad552 

您需要在Go程序中使用与Node.js程序( hex )相同的编码:

 package main import ( "crypto/hmac" "crypto/sha256" "encoding/hex" "fmt" ) func ComputeHmac256(message string, secret string) string { key := []byte(secret) h := hmac.New(sha256.New, key) h.Write([]byte(message)) return hex.EncodeToString(h.Sum(nil)) } func main() { fmt.Println(ComputeHmac256("sms1", "b5fb5b3a65b8429693c3a029308e2e46")) } 

https://play.golang.org/p/-1yePFeipT