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 }