123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package utilx
- import (
- "bytes"
- "crypto/md5"
- "encoding/hex"
- "fmt"
- "log"
- "sort"
- )
- // 转转签名方法
- func CreateZzSign(params map[string]interface{}, secretKey string) string {
- if len(params) == 0 {
- log.Println("参数为空,签名: 空字符串")
- return ""
- }
- // 将map转换为list,并按键排序
- var keys []string
- for k := range params {
- keys = append(keys, k)
- }
- sort.Strings(keys)
- var values []interface{}
- for _, k := range keys {
- values = append(values, params[k])
- }
- var buffer bytes.Buffer
- for i := 0; i < len(keys); i++ {
- buffer.WriteString(keys[i])
- buffer.WriteString("=")
- buffer.WriteString(fmt.Sprintf("%v", values[i]))
- buffer.WriteString("&")
- }
- buffer.WriteString("key=")
- buffer.WriteString(secretKey)
- preEncryptString := buffer.String()
- log.Println("排序后准备生成签名的字符串为:", preEncryptString)
- md5Digest := md5.Sum([]byte(preEncryptString))
- sign := hex.EncodeToString(md5Digest[:])
- log.Println("preEncryptString:", preEncryptString, "==> sign:", sign)
- return sign
- }
|