github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mp/card/sign.go (about) 1 package card 2 3 import ( 4 "bufio" 5 "crypto/sha1" 6 "encoding/hex" 7 "sort" 8 ) 9 10 // 卡券通用签名方法. 11 // 12 // 将 strs 里面的字符串字典排序, 然后拼接成一个字符串后做 sha1 签名. 13 func Sign(strs []string) (signature string) { 14 sort.Strings(strs) 15 16 h := sha1.New() 17 18 bufw := bufio.NewWriterSize(h, 128) // sha1.BlockSize 的整数倍 19 for _, str := range strs { 20 bufw.WriteString(str) 21 } 22 bufw.Flush() 23 24 return hex.EncodeToString(h.Sum(nil)) 25 }