golang sign 加密算法,仿某网站js sign加密算法

demo

1
2
3
4
5
6
7
8
9
10
11
12
package main

import (
"math"
"math/rand"
"time"
"fmt"
"strconv"
"crypto/md5"
"encoding/hex"

)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
func getRandomNonce() string{

var chars = "abcdefghijklmnopqrstuvwxyz0123456789"
var max = len(chars)
var nonce = ""

r := rand.New(rand.NewSource(time.Now().UnixNano()))
ch := []rune(chars)
for i := 0; i < 32; i++{
aa := math.Floor(r.Float64() * float64(max))
nonce += string(ch[int(aa)])

}
return nonce
}

func createSign(nonce string, cellphone string) string {

timestamp := time.Now().Unix()
fmt.Println("时间戳参数:", timestamp)
fmt.Println("nonce参数:", nonce)
var originSign1 = `device_id=12345&nonce=` + nonce + "&phone=" + cellphone + "&timestamp=" + strconv.FormatInt(timestamp*1000, 10); //注意顺序
h := md5.New()
h.Write([]byte(originSign1)) // 需要加密的字符串为例如 123456
cipherStr := h.Sum(nil)
fmt.Printf("sign: %s\n", hex.EncodeToString(cipherStr)) // 输出加密结果
signstr := hex.EncodeToString(cipherStr)
fmt.Println("加密参数:", originSign1)

return signstr


}


func main(){

// 手机号sign 加密
phone := "1323456780"
nonce := getRandomNonce()
fmt.Println(nonce)
createSign(nonce, phone)

}

以下是代码片段 随机生成 有范围之间的随机整数

1
2
3
4
5
6
7
8
9
10
11
12
13

// 代码片段 随机生成 有范围之间的随机整数

func RandInt64(min, max int64) int64 {
rand.Seed(time.Now().UnixNano())
fmt.Println(min + rand.Int63n(max-min+1))
return min + rand.Int63n(max-min+1)
}

func main(){
// 例如 随机生成 1000 - 9999 之间的4位随机整数
RandInt64(1000, 9999)
}