1 回答
TA贡献1886条经验 获得超2个赞
它们似乎产生相同的结果,但您在 Node 代码中传递给摘要调用的编码是 。如果在两端以相同的方式对返回进行编码,则它们应该匹配。'hex'
const crypto = require('crypto')
const generateMAC = (message, secret) =>
crypto.createHmac('sha256', secret).update(message).digest('base64')
console.log(generateMAC('foo', 'bar'))
package main
import (
"crypto/hmac"
"crypto/sha256"
"encoding/base64"
"fmt"
)
func generateMAC(message []byte, secret []byte) string {
mac := hmac.New(sha256.New, secret)
_, err := mac.Write(message)
if err != nil {
return "oh no"
}
return base64.StdEncoding.EncodeToString(mac.Sum(nil))
}
func main() {
fmt.Println(generateMAC([]byte("foo"), []byte("bar")))
}
这两者都产生相同的输出,因为它们都编码为base64:。FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE=
.digest()如果未指定编码,则默认返回缓冲区,然后也可以使用这些编码之一在单独的编码中使用该缓冲区。.toString()
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报