• 基础语法-根据时间获取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
    
  • 相关阅读:
    Golang 接口(interface)
    Golang 结构体(struct)
    Golang fmt包介绍
    Golang的函数(func)
    Golang数据类型 (map)
    Golang 指针(pointer)
    Golang数据类型 切片(slice)
    操作系统学习笔记(五) 页面置换算法
    Python 元组、列表
    操作系统学习笔记(四) 存储模型和虚拟内存
  • 原文地址:https://www.cnblogs.com/icxldd/p/13777565.html
Copyright © 2020-2023  润新知