go - 使用与 node.js 或 Python 不同的结果的 Go 签名的 Hmac/sha1 消息

标签 go hmac hmacsha1

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

相关文章:

linux - Linux 加密库中的 alloc_ahash 与 alloc_shash

bash - sed: 1: "'/正则表达式/.. .": invalid command code '

Python 3 使用 key sha512 签署消息

swift - 使用 HMAC SHA512 从 API 获取数据 - Swift

java - 无法解决 HTTP 基本身份验证问题 - 消息 header 中存在非法字符(由 HMAC 编码产生)

javascript - 使用 HMAC 方法和 Google Apps 脚本生成带 key 的哈希值

go - 使用模块在 go 中进行版本化导入失败

go - 来自不同文件的全局变量 Golang

go - 链接 Go against a static 32 bit 3rd party library

java - 使用 Hmac SHA1 签署 HTTP 请求