29 lines
502 B
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))
|
|
} |