package idgen import ( "crypto/rand" "encoding/base64" "math/big" ) const idChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" func GenerateID(length int) (string, error) { result := make([]byte, length) for i := range result { n, err := rand.Int(rand.Reader, big.NewInt(int64(len(idChars)))) if err != nil { return "", err } result[i] = idChars[n.Int64()] } return string(result), nil } func GenerateToken() (string, error) { token := make([]byte, 48) _, err := rand.Read(token) if err != nil { return "", err } return base64.URLEncoding.EncodeToString(token), nil }