首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js crypto MD5和Golang /md5.sum()之间的不同散列

Node.js crypto MD5和Golang /md5.sum()之间的不同散列
EN

Stack Overflow用户
提问于 2021-07-13 15:50:27
回答 1查看 856关注 0票数 1

如何用加密js的MD5-函数(https://www.npmjs.com/package/crypto-js)来处理对象?我试图使用crypto/md5 (https://pkg.go.dev/crypto/md5)包在Golang中复制哈希行为,但是我不知道为什么哈希对于我的两个实现是不同的。这肯定与加密-js如何在内部处理对象有关,因为对于纯字符串,我得到的是相同的散列。

Node.js示例:

代码语言:javascript
复制
var CryptoJS = require("crypto-js");
let body = {"key":"value"}
let bodyHash =  CryptoJS.MD5(body);
CryptoJS.enc.Base64.stringify(hash)

输出散列: SH97IvaDEtLBu8k7GupEWw==

Golang示例:

代码语言:javascript
复制
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==

感谢您的任何帮助和解释!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-13 16:07:52

在对象(而不是字符串)上使用md5 (您正在散列不同的事物)。

代码语言:javascript
复制
var CryptoJS = require("crypto-js");
let body = {"key":"value"}
let bodyHash =  CryptoJS.MD5(JSON.stringify(body)); <<<<<<<<<
CryptoJS.enc.Base64.stringify(hash)

散列:pzU/fN3OgI3gAydHoLe+UA==

金刚

代码语言:javascript
复制
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==

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68365681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档