
go 中按字典顺序排序并以 json 格式转换 map 的 md5 值与 php 不一致
为了在 go 中按字典顺序对 map 进行排序,我们使用 go 标准库中的 sort 包。该代码还会将排序后的 map 转换为 json 格式,并计算其 md5 值。
import (
"bytes"
"crypto/md5"
"encoding/hex"
"encoding/json"
"fmt"
"sort"
)
func main() {
params := map[string]string{
"name": "111",
"domain": "www.baidu.com?name=1&id=1",
}
// 按键排序
keys := make([]string, len(params))
i := 0
for k := range params {
keys[i] = k
i++
}
sort.Strings(keys)
// 拼接排序后的 Map
sortedParams := make([]string, len(params))
for i, k := range keys {
sortedParams[i] = fmt.Sprintf(`"%s":"%s"`, k, params[k])
}
sortedData := fmt.Sprintf("{%s}", strings.Join(sortedParams, ","))
// 计算 MD5 值
h := md5.New()
h.Write([]byte(sortedData))
fmt.Println(hex.EncodeToString(h.Sum(nil)))
}通过使用 sort 包对按键进行字典顺序排序,并将结果拼接为一个字符串,计算得到的 md5 值与 php 一致。
以上就是Go 中如何按字典顺序排序 Map 并计算其 JSON 格式的 MD5 值,以与 PHP 保持一致?的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号