1 回答

TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊
它們似乎產(chǎn)生相同的結(jié)果,但您在 Node 代碼中傳遞給摘要調(diào)用的編碼是 。如果在兩端以相同的方式對返回進(jìn)行編碼,則它們應(yīng)該匹配。'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")))
}
這兩者都產(chǎn)生相同的輸出,因為它們都編碼為base64:。FHkzIYqqvAuLEKKzpcNGhMjZQ0G88QpHNtxycPd0GFE=
.digest()如果未指定編碼,則默認(rèn)返回緩沖區(qū),然后也可以使用這些編碼之一在單獨(dú)的編碼中使用該緩沖區(qū)。.toString()
- 1 回答
- 0 關(guān)注
- 102 瀏覽
添加回答
舉報