编辑代码

package main
import (
	"fmt"
	"sort"
    "strings"
    "encoding/hex"
    "crypto/md5"
)
func main () {
    fmt.Println("测试鉴权加密开始......")

    params := map[string]interface{}{
        "id":     "4ea5de1f445e6350ec50414f6b1a5179",
        "caller": "yh",
        "ts":     1666848176,
    }

    // 生成token
    sign := makeSign(params)

    // 打印结果
    fmt.Println("加密结果:"+ sign)
    
    // 对键值对排序
    // sortMap(params)
}

// 生成sign  md5加密(AppKey + 循环(键值+数值) + AppKey)
func makeSign(params map[string]interface{}) string {
    var AppKey = "pajiwqhivigxorfq98kc6479ehwkqfxq"
    var result string
    keys := sortMap(params)
    for _, key := range keys {
        result += key + fmt.Sprintf("%v", params[key])
    }
    result = AppKey + result + AppKey
    fmt.Println("加密明文:" + result)
    fmt.Println(result)
    m5 := md5.New()
    m5.Write([]byte(result))
    return strings.ToUpper(hex.EncodeToString(m5.Sum(nil)))
}

func sortMap(v map[string]interface{}) []string {
    var keys []string
    for k := range v {
        keys = append(keys, k)
    }
    sort.Strings(keys)
    fmt.Println("键值排序结果:")
    fmt.Println(keys)
    return keys
}