2016-07-14 20 views
-1

Goを使用してHmac/SHA1署名を生成しようとしていますが、Node.jsまたはPythonでテストした場合とは異なる結果になります。ここでnode.jsまたはPythonと異なる結果を使用して署名付きHmac/sha1メッセージ

は、移動中に私のコードです:

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') 
); 
関連する問題