1 Star 1 Fork 0

ytsunlei/utils

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
sign.go 1.22 KB
一键复制 编辑 原始数据 按行查看 历史
lei05.sun 提交于 2018-11-01 13:43 . 如果签名不匹配,打印日志
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
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/ytsunlei/utils.git
git@gitee.com:ytsunlei/utils.git
ytsunlei
utils
utils
master

搜索帮助