wx-backend-go/util/sign.go

29 lines
502 B
Go

package util
import (
"crypto/sha1"
"encoding/hex"
"sort"
"strings"
)
func CheckSignature(signature, timestamp, nonce, token string) bool {
arr := []string{timestamp, nonce, token}
sort.Strings(arr)
n := len(timestamp) + len(nonce) + len(token)
var b strings.Builder
b.Grow(n)
for i := 0; i < len(arr); i++ {
b.WriteString(arr[i])
}
return Sha1(b.String()) == signature
}
func Sha1(str string) string {
h := sha1.New()
h.Write([]byte(str))
return hex.EncodeToString(h.Sum(nil))
}