2016-07-14 35 views
-1

我正在尝试使用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() 

你能帮助找出什么我做错了?

谢谢!

回答

1

我在测试中得到了和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') 
);