我正在尝试使用 Go 生成 Hmac/SHA1 签名,但我得到的结果与我使用 Node.js 或 Python 进行测试时的结果不同。
这是我在 Go 中的代码:
signature := hmac.New(sha1.New, []byte(signKey))
signature.Write([]byte(buffer))
return hex.EncodeToString(signature.Sum(nil))
这是我在 Node.js 中的代码:
return crypto.createHmac('sha1', signKey).update(buffer).digest('hex');
python :
return hmac.new(signKey, buffer, sha1).hexdigest()
你能帮我弄清楚我做错了什么吗?
谢谢!
最佳答案
在我的测试中,我在 Go 和 Node.js 中得到了相同的结果。这意味着您的 key 和/或缓冲区在 Go 中必须不同。
这是我的测试代码供引用:
开始:
package main
import (
"crypto/hmac"
"crypto/sha1"
"encoding/hex"
)
func main() {
signKey := "12345"
buffer := []byte{1, 2, 3}
signature := hmac.New(sha1.New, []byte(signKey))
signature.Write([]byte(buffer))
println(hex.EncodeToString(signature.Sum(nil)))
}
节点.js:
var crypto = require('crypto');
var signKey = "12345";
var buffer = "\x01\x02\x03";
console.log(
crypto.createHmac('sha1', signKey).update("\x01\x02\x03", "binary").digest('hex')
);
关于go - 使用与 node.js 或 Python 不同的结果的 Go 签名的 Hmac/sha1 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38381217/