36 lines
757 B
Go
36 lines
757 B
Go
|
package saft_hat
|
|||
|
|
|||
|
import (
|
|||
|
"crypto/md5"
|
|||
|
"encoding/hex"
|
|||
|
"sort"
|
|||
|
"strings"
|
|||
|
)
|
|||
|
|
|||
|
// 使用参数名的ASCII升序排序后,将参数的值进行拼接并加密生成签名
|
|||
|
func GenerateSignature(params map[string]string) string {
|
|||
|
// 获取所有的键并按照ASCII码排序
|
|||
|
var keys []string
|
|||
|
for k := range params {
|
|||
|
keys = append(keys, k)
|
|||
|
}
|
|||
|
sort.Strings(keys)
|
|||
|
|
|||
|
// 按排序后的键,拼接它们的值
|
|||
|
var values []string
|
|||
|
for _, k := range keys {
|
|||
|
values = append(values, params[k])
|
|||
|
}
|
|||
|
signStr := strings.Join(values, "&")
|
|||
|
|
|||
|
// 将拼接后的字符串转换为小写
|
|||
|
signStr = strings.ToLower(signStr)
|
|||
|
|
|||
|
// 使用MD5加密
|
|||
|
hash := md5.New()
|
|||
|
hash.Write([]byte(signStr))
|
|||
|
md5String := hex.EncodeToString(hash.Sum(nil))
|
|||
|
|
|||
|
return md5String
|
|||
|
}
|