总体
代码
//demo_26.go
package main
import (
"crypto/md5"
"encoding/hex"
"fmt"
"sort"
"time"
)
func main() {
str := "12345"
fmt.Printf("MD5(%s): %s
", str, MD5(str))
fmt.Printf("current time str : %s
", getTimeStr())
fmt.Printf("current time unix : %d
", getTimeInt())
params := map[string]interface{} {
"name" : "Tom",
"pwd" : "123456",
"age" : 30,
}
fmt.Printf("sign : %s
", createSign(params))
}
// MD5 方法
func MD5(str string) string {
s := md5.New()
s.Write([]byte(str))
return hex.EncodeToString(s.Sum(nil))
}
// 获取当前时间字符串
func getTimeStr() string {
return time.Now().Format("2006-01-02 15:04:05")
}
// 获取当前时间戳
func getTimeInt() int64 {
return time.Now().Unix()
}
// 生成签名
func createSign(params map[string]interface{}) string {
var key []string
var str = ""
for k := range params {
key = append(key, k)
}
sort.Strings(key)
for i := 0; i < len(key); i++ {
if i == 0 {
str = fmt.Sprintf("%v=%v", key[i], params[key[i]])
} else {
str = str + fmt.Sprintf("&xl_%v=%v", key[i], params[key[i]])
}
}
// 自定义密钥
var secret = "123456789"
// 自定义签名算法
sign := MD5(MD5(str) + MD5(secret))
return sign
}
输出
MD5(12345): 827ccb0eea8a706c4c34a16891f84e7b
current time str : 2020-10-07 15:36:28
current time unix : 1602056189
sign : 33b940c8f18ede393ea34cd45c406db4