基础语法-根据时间获取md5签名(11)

总体

代码

//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
原文地址:https://www.cnblogs.com/icxldd/p/13777565.html