如何生成HMAC

时间:2016-09-10 12:29:47

标签: node.js go cryptography hmac

我需要在Go中创建一个Hmac。我在nodejs中创建了一个Hmac,需要在Go中生成相同的Hamc。尝试下面的代码,但得到完全不同的输出。我不知道自己做错了什么。 这就是我试过的

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div class="dice-roller">
    <div class="dice d1"></div>
    <div class="dice d2"></div>
    </div>

需要等同于以下nodejs代码

link_to 'show on page', Object.const_get(c.commentable_type).find(c.commentable_id)

1 个答案:

答案 0 :(得分:12)

您需要在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