From 1a8c0f1869b464bcac91b946705fca68cba1d8d9 Mon Sep 17 00:00:00 2001 From: liujunyi Date: Wed, 24 Jan 2024 15:38:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=96=B0=E9=AA=8C=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdk/client.go | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/sdk/client.go b/sdk/client.go index e61aedc..dca55a8 100644 --- a/sdk/client.go +++ b/sdk/client.go @@ -2,12 +2,15 @@ package sdk import ( "crypto/md5" + "encoding/hex" "fmt" "io/ioutil" + "math/rand" "net/http" "net/url" - "sort" + "strconv" "strings" + "time" ) const ( @@ -99,27 +102,21 @@ func (c *Client) Request(apiUrl string, params map[string]string, method string) } func (c *Client) makeSign(params map[string]string) (string, map[string]string) { - var keys []string - var data string - if _, ok := params["appKey"]; !ok { - params["appKey"] = c.appKey - } + rand.Seed(time.Now().UnixNano()) + timer := strconv.Itoa(int(time.Now().UnixMilli())) + nonce := strconv.Itoa(rand.Intn(900000) + 100000) + signRan := fmt.Sprintf("appKey=%s&timer=%s&nonce=%s&key=%s", c.appKey, timer, nonce, c.appSecret) + hash := md5.New() + hash.Write([]byte(signRan)) + md5Hash := hash.Sum(nil) + md5HashString := hex.EncodeToString(md5Hash) + signRan = strings.ToUpper(md5HashString) + params["appKey"] = c.appKey + params["nonce"] = nonce + params["signRan"] = signRan + params["timer"] = timer if _, ok := params["version"]; !ok { params["version"] = c.version } - for key, _ := range params { - keys = append(keys, key) - } - sort.Strings(keys) - //拼接 - for _, k := range keys { - data = fmt.Sprintf("%s%s=%s&", data, k, params[k]) - } - data = fmt.Sprintf("%skey=%s", data, c.appSecret) - data = strings.Trim(data, "&") - m := md5.New() - m.Write([]byte(data)) - sign := strings.ToUpper(fmt.Sprintf("%x", m.Sum(nil))) - params["sign"] = sign - return sign, params + return signRan, params } -- Gitee