| | |
| | | "crypto/md5" |
| | | "crypto/sha256" |
| | | "encoding/base64" |
| | | "encoding/hex" |
| | | "fmt" |
| | | "math/rand" |
| | | "strconv" |
| | | "strings" |
| | | "time" |
| | | "unsafe" |
| | | ) |
| | | |
| | | func Sha256(message string) string { |
| | | h := sha256.New() |
| | | h.Write([]byte(message)) |
| | | res := h.Sum(nil) |
| | | return hex.EncodeToString(res) |
| | | } |
| | | |
| | | func ComputeHmacSha256Base64(message string, secret string) string { |
| | | key := []byte(secret) |
| | | h := hmac.New(sha256.New, key) |
| | | h.Write([]byte(message)) |
| | | abs := h.Sum(nil) |
| | | |
| | | return base64.StdEncoding.EncodeToString(abs) |
| | | } |
| | | |
| | | |
| | | func Hik_ComputeSignatureBase64(appKey string, appSecret string, httpMethod string, accept string, contentType string, date string, url string) string { |
| | | httpHeaders := httpMethod +"\n" + accept + "\n" + contentType + "\n"+ date +"\n" |
| | |
| | | func MD5Base64(s []byte) string { |
| | | sum := md5.Sum(s) |
| | | return base64.StdEncoding.EncodeToString(sum[:]) |
| | | } |
| | | |
| | | func GenValidateCode(width int) string { |
| | | numeric := [10]byte{0,1,2,3,4,5,6,7,8,9} |
| | | r := len(numeric) |
| | | rand.Seed(time.Now().UnixNano()) |
| | | |
| | | var sb strings.Builder |
| | | for i := 0; i < width; i++ { |
| | | fmt.Fprintf(&sb, "%d", numeric[ rand.Intn(r) ]) |
| | | } |
| | | str := sb.String() |
| | | if strings.HasPrefix(str, "0") { |
| | | pI := RandInt(1,9) |
| | | str = strconv.Itoa(pI) + str[1:] |
| | | } |
| | | return str |
| | | } |
| | | |
| | | //生成区间随机数 |
| | | func RandInt(min, max int) int { |
| | | if min >= max || min ==0 ||max == 0 { |
| | | return max |
| | | } |
| | | return rand.Intn(max-min) + min |
| | | } |