/** * @author chengliang * @date 2026/1/23 18:38 * @brief * **/ package tool import ( "crypto/md5" "encoding/hex" "fmt" "hash" "sort" "strings" "sync" ) const KEY_SECRET = "secret" var md5Pool = sync.Pool{ New: func() interface{} { return md5.New() }, } func GenSign(params map[string]any) string { var keys []string for k := range params { keys = append(keys, k) } sort.Strings(keys) fmt.Println("keys:", keys) var paramParts []string for _, k := range keys { paramParts = append(paramParts, fmt.Sprintf("%s=%s", k, params[k])) } paramStr := strings.Join(paramParts, "&") paramStr = fmt.Sprintf("%s&%s", paramStr, KEY_SECRET) md5Obj := md5Pool.Get().(hash.Hash) defer md5Pool.Put(md5Obj) md5Obj.Reset() md5Obj.Write([]byte(paramStr)) md5ObjSum := md5Obj.Sum(nil) return hex.EncodeToString(md5ObjSum) }