go_dreamfactory/lego/utils/crypto/md5/md5.go
2022-12-20 17:55:23 +08:00

54 lines
1.0 KiB
Go

package md5
import (
"crypto/md5"
"encoding/hex"
"fmt"
"sort"
"strings"
)
/*
MD5加密
*/
//MD5加密 大写
func MD5(str string) string {
h := md5.New()
h.Write([]byte(str))
return hex.EncodeToString(h.Sum(nil))
}
//MD5加密 大写
func MD5EncToUpper(str string) string {
h := md5.New()
h.Write([]byte(str))
return strings.ToUpper(hex.EncodeToString(h.Sum(nil)))
}
//MD5加密 小写
func MD5EncToLower(str string) string {
h := md5.New()
h.Write([]byte(str))
return strings.ToLower(hex.EncodeToString(h.Sum(nil)))
}
//参数签名
func ParamSign(param map[string]interface{}, key string) (orsign, sign string) {
a := sort.StringSlice{}
for k, _ := range param {
a = append(a, k)
}
sort.Sort(a)
orsign = ""
for _, k := range a {
switch param[k].(type) { //只签名基础数据
case bool, byte, int8, int16, uint16, int32, uint32, int, int64, uint64, float64, float32, string:
orsign = orsign + fmt.Sprintf("%s=%v&", k, param[k])
break
}
}
orsign = orsign + fmt.Sprintf("key=%s", key)
sign = MD5EncToLower(orsign)
return
}