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  }