您的位置 首页 知识分享

如何将 PHP/Python 中字典排序后签名转换成 Golang 代码?

如何将 php/ 代码中的字典排序再签名,并转换成 代码 在 php 中,通常使用如下代码对字典进行排序后序列…

如何将 PHP/Python 中字典排序后签名转换成 Golang 代码?

如何将 php/ 代码中的字典排序再签名,并转换成 代码

在 php 中,通常使用如下代码对字典进行排序后序列化生成签名:

ksort($params);   //把字典 $params 按 $encodedparams = http_build_query($params); echo md5($encodedparams . $signkey);
登录后复制

那么,如何在 golang 代码中实现此功能呢?

第一步:排序字典

立即学习“”;

我们可以使用 sort.strings 函数对字典的键进行升序排序:

// 原始参数字典 params := map[string]string{     "x": "有中文有符!@ 2号空格http://aaa.com",     "y":  "1",     "a": "{"a1":222,"a2":"u4e2du6587"}", }  // 升序排序 key keys := make([]string, 0, len(params)) for k := range params {     keys = append(keys, k) } sort.strings(keys)
登录后复制

第二步:拼接和 url 编码

接下来,我们将字典中的拼接成字符串,并使用 url.values 进行 url 编码:

// 拼接 data := url.values{} for _, k := range keys {     data.add(k, params[k]) }  // url 编码 encodedparams := data.encode()
登录后复制

第三步:md5

最后,我们使用 md5 对编码后的字符串加上签名密钥进行加密:

// md5 signkey := "abc" signdata := encodedparams + signkey hash := md5.new() hash.write([]byte(signdata)) bytes := hash.sum(nil) sign := hex.encodetostring(bytes)  // 结果:18cebcb0d00d0c48904fd4b06ed0319d fmt.println(sign)
登录后复制

提示

注意,php 中的 uxxxx 字符串表示普通字符串,而在 golang/python/js 中表示 unicode 转义字符。因此,我们需要对该字符串进行转义:

a := "u4e2du6587" b := "中文" fmt.Println(a == b) // true
登录后复制

以上就是如何将 PHP/Python 中字典排序后签名转换成 Golang 代码?的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表甲倪知识立场,转载请注明出处:http://www.spjiani.cn/wp/4434.html

作者: nijia

发表评论

您的电子邮箱地址不会被公开。

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部