Node.js crypto-js MD5 和 Golang crypto/md5.Sum() 之间的不同散列
different hash between Node.js crypto-js MD5 and Golang crypto/md5.Sum()
crypto-js 的 MD5 函数 (https://www.npmjs.com/package/crypto-js)? I am trying to replicate the hashing behaviour in Golang using the crypto/md5 (https://pkg.go.dev/crypto/md5) 包如何处理对象,但我无法弄清楚为什么我的两个实现的哈希不同。这一定与 crypto-js 在内部处理对象的方式有关,因为对于纯字符串,我得到相同的哈希值。
Node.js 示例:
var CryptoJS = require("crypto-js");
let body = {"key":"value"}
let bodyHash = CryptoJS.MD5(body);
CryptoJS.enc.Base64.stringify(hash)
输出哈希:SH97IvaDEtLBu8k7GupEWw==
Golang 示例:
import (
"crypto/md5"
"encoding/base64"
)
type KeyValue struct {
Key string `json:"key"`
}
func main() {
body := KeyValue{
Key: "value",
}
bodyByteArray, _ := json.Marshal(body)
bodyHash := md5.Sum(bodyByteArray)
bodyHashBase64 := base64.StdEncoding.EncodeToString(bodyHash)
}
输出哈希:pzU/fN3OgI3gAydHoLe+UA==
感谢任何帮助和解释!
您在对象上使用 md5 而不是字符串(您在散列不同的东西)
var CryptoJS = require("crypto-js");
let body = {"key":"value"}
let bodyHash = CryptoJS.MD5(JSON.stringify(body)); <<<<<<<<<
CryptoJS.enc.Base64.stringify(hash)
哈希:pzU/fN3OgI3gAydHoLe+UA==
对于 golang
package main
import (
"crypto/md5"
"encoding/base64"
"encoding/json"
"fmt"
)
type KeyValue struct {
Key string `json:"key"`
}
func main() {
body := KeyValue{
Key: "value",
}
bodyByteArray, _ := json.Marshal(body)
fmt.Println(string(bodyByteArray))
digest := md5.New()
digest.Write(bodyByteArray)
bodyHash := digest.Sum(nil)
bodyHashBase64 := base64.StdEncoding.EncodeToString(bodyHash)
fmt.Println(bodyHashBase64)
}
哈希:pzU/fN3OgI3gAydHoLe+UA==
crypto-js 的 MD5 函数 (https://www.npmjs.com/package/crypto-js)? I am trying to replicate the hashing behaviour in Golang using the crypto/md5 (https://pkg.go.dev/crypto/md5) 包如何处理对象,但我无法弄清楚为什么我的两个实现的哈希不同。这一定与 crypto-js 在内部处理对象的方式有关,因为对于纯字符串,我得到相同的哈希值。
Node.js 示例:
var CryptoJS = require("crypto-js");
let body = {"key":"value"}
let bodyHash = CryptoJS.MD5(body);
CryptoJS.enc.Base64.stringify(hash)
输出哈希:SH97IvaDEtLBu8k7GupEWw==
Golang 示例:
import (
"crypto/md5"
"encoding/base64"
)
type KeyValue struct {
Key string `json:"key"`
}
func main() {
body := KeyValue{
Key: "value",
}
bodyByteArray, _ := json.Marshal(body)
bodyHash := md5.Sum(bodyByteArray)
bodyHashBase64 := base64.StdEncoding.EncodeToString(bodyHash)
}
输出哈希:pzU/fN3OgI3gAydHoLe+UA==
感谢任何帮助和解释!
您在对象上使用 md5 而不是字符串(您在散列不同的东西)
var CryptoJS = require("crypto-js");
let body = {"key":"value"}
let bodyHash = CryptoJS.MD5(JSON.stringify(body)); <<<<<<<<<
CryptoJS.enc.Base64.stringify(hash)
哈希:pzU/fN3OgI3gAydHoLe+UA==
对于 golang
package main
import (
"crypto/md5"
"encoding/base64"
"encoding/json"
"fmt"
)
type KeyValue struct {
Key string `json:"key"`
}
func main() {
body := KeyValue{
Key: "value",
}
bodyByteArray, _ := json.Marshal(body)
fmt.Println(string(bodyByteArray))
digest := md5.New()
digest.Write(bodyByteArray)
bodyHash := digest.Sum(nil)
bodyHashBase64 := base64.StdEncoding.EncodeToString(bodyHash)
fmt.Println(bodyHashBase64)
}
哈希:pzU/fN3OgI3gAydHoLe+UA==