nonce.go 695 B

12345678910111213141516171819202122232425262728
  1. // Copyright 2021 Tencent Inc. All rights reserved.
  2. package utils
  3. import (
  4. "crypto/rand"
  5. )
  6. const (
  7. // NonceSymbols 随机字符串可用字符集
  8. NonceSymbols = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  9. // NonceLength 随机字符串的长度
  10. NonceLength = 32
  11. )
  12. // GenerateNonce 生成一个长度为 NonceLength 的随机字符串(只包含大小写字母与数字)
  13. func GenerateNonce() (string, error) {
  14. bytes := make([]byte, NonceLength)
  15. _, err := rand.Read(bytes)
  16. if err != nil {
  17. return "", err
  18. }
  19. symbolsByteLength := byte(len(NonceSymbols))
  20. for i, b := range bytes {
  21. bytes[i] = NonceSymbols[b%symbolsByteLength]
  22. }
  23. return string(bytes), nil
  24. }