代码拉取完成,页面将自动刷新
package utils
import (
"fmt"
"net/url"
"sort"
"strings"
"utils/logs"
)
//go语言提供的net/url中,获取get参数,比如: a=1&b=2&password=1&username=1
//可以使用 ctx.Request.URL.Query(),返回的是 map[string][]string 类型。
//如下方法,是针对get请求,做方法签名.根据key值排序
func mapSortBykey(m map[string][]string) string {
//对key进行升序排序.
sorted_keys := make([]string, 0)
for key, _ := range m {
sorted_keys = append(sorted_keys, key)
}
sort.Strings(sorted_keys)
//("bar=baz&foo=quux") sorted by key.
sortByKeyMap := make(url.Values,0)
for _, key := range sorted_keys {
value := fmt.Sprintf("%v", m[key][0])
sortByKeyMap.Add(key,value)
}
sortUrl := sortByKeyMap.Encode()
return sortUrl
}
//计算签名的值
func methodSign(map_data map[string][]string,key string) string {
str := mapSortBykey(map_data) +"&APP_SECRET=" +key
sign_str := strings.ToUpper(MD5(str))
return sign_str
}
//验证签名
func VerifySign(map_data map[string][]string,key,sign string,) (bool) {
sign_value := methodSign(map_data,key)
if sign_value != sign {
logs.Debug("服务端签名的值:"+sign_value+"\t 客户端传过来的值:"+sign)
return false
}
return true
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。