diff --git a/utils.go b/utils.go index d5fb2b8..9051387 100644 --- a/utils.go +++ b/utils.go @@ -2,18 +2,15 @@ package main import ( "crypto/rand" + "encoding/base64" ) -const ( - alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" -) - -// RandomString ... +// RandomString generates random bytes and then encodes them using base64 +// which guarantees they are URL-safe. The resultant output is not necessarily +// a valid base-64 string. func RandomString(length int) string { - bytes := make([]byte, length) + bytes := make([]byte, length*2) rand.Read(bytes) - for i, b := range bytes { - bytes[i] = alphabet[b%byte(len(alphabet))] - } - return string(bytes) + se := base64.StdEncoding.EncodeToString(bytes) + return se[0:length] }