// Package pkg 提供通用工具:安全随机数、输入校验、时间处理。 package pkg import ( "crypto/rand" "encoding/hex" "fmt" ) // RandomBytes 返回 n 字节密码学安全随机数。 func RandomBytes(n int) ([]byte, error) { b := make([]byte, n) if _, err := rand.Read(b); err != nil { return nil, fmt.Errorf("pkg: rand read: %w", err) } return b, nil } // RandomDigits 返回 n 位十进制数字串(如 OTP 验证码),首位可能为 0。 func RandomDigits(n int) (string, error) { b, err := RandomBytes(n) if err != nil { return "", err } out := make([]byte, n) for i, v := range b { out[i] = '0' + v%10 } return string(out), nil } // RandomHex 返回 n 字节随机数的十六进制串(如会话 ID)。 func RandomHex(n int) (string, error) { b, err := RandomBytes(n) if err != nil { return "", err } return hex.EncodeToString(b), nil }