如何用加密js的MD5-函数(https://www.npmjs.com/package/crypto-js)来处理对象?我试图使用crypto/md5 (https://pkg.go.dev/crypto/md5)包在Golang中复制哈希行为,但是我不知道为什么哈希对于我的两个实现是不同的。这肯定与加密-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==
感谢您的任何帮助和解释!
发布于 2021-07-13 16:07:52
在对象(而不是字符串)上使用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==
金刚
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==
https://stackoverflow.com/questions/68365681
复制相似问题