package cookie // Functions for generating random strings import ( "math/rand" ) // RandomString generates a random string of a given length. func RandomString(length int) string { b := make([]byte, length) for i := 0; i < length; i++ { b[i] = byte(rand.Int63() & 0xff) } return string(b) } /*RandomHumanFriendlyString generates a random, but human-friendly, string of * the given length. It should be possible to read out loud and send in an email * without problems. The string alternates between vowels and consontants. * * Example output for length 10: ykyzexebub */ func RandomHumanFriendlyString(length int) string { const ( vowels = "aeiouy" // email+browsers didn't like "æøå" too much consonants = "bcdfghjklmnpqrstvwxz" ) b := make([]byte, length) for i := 0; i < length; i++ { if i%2 == 0 { b[i] = vowels[rand.Intn(len(vowels))] } else { b[i] = consonants[rand.Intn(len(consonants))] } } return string(b) } // RandomCookieFriendlyString generates a random, but cookie-friendly, string of // the given length. func RandomCookieFriendlyString(length int) string { const allowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" b := make([]byte, length) for i := 0; i < length; i++ { b[i] = allowed[rand.Intn(len(allowed))] } return string(b) }