使用Go签名的Hmac/sha1消息与node.js或Python不同的结果
问题描述:
我正在尝试使用Go生成Hmac/SHA1签名,但获得的结果与使用Node.js或Python进行测试的结果不同。使用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相同的结果。这意味着你的密钥和/或缓冲区必须与不同。
这里是我的参考测试代码:
转到:
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)))
}
的Node.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')
);