github.com/jaegerpicker/docker@v0.7.7-0.20150325003727-22dba32b4dab/pkg/stringutils/stringutils.go (about) 1 package stringutils 2 3 import ( 4 "crypto/rand" 5 "encoding/hex" 6 "io" 7 mathrand "math/rand" 8 "time" 9 ) 10 11 // Generate 32 chars random string 12 func GenerateRandomString() string { 13 id := make([]byte, 32) 14 15 if _, err := io.ReadFull(rand.Reader, id); err != nil { 16 panic(err) // This shouldn't happen 17 } 18 return hex.EncodeToString(id) 19 } 20 21 // Generate alpha only random stirng with length n 22 func GenerateRandomAlphaOnlyString(n int) string { 23 // make a really long string 24 letters := []byte("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") 25 b := make([]byte, n) 26 r := mathrand.New(mathrand.NewSource(time.Now().UTC().UnixNano())) 27 for i := range b { 28 b[i] = letters[r.Intn(len(letters))] 29 } 30 return string(b) 31 } 32 33 // Generate Ascii random stirng with length n 34 func GenerateRandomAsciiString(n int) string { 35 chars := "abcdefghijklmnopqrstuvwxyz" + 36 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + 37 "~!@#$%^&*()-_+={}[]\\|<,>.?/\"';:` " 38 res := make([]byte, n) 39 for i := 0; i < n; i++ { 40 res[i] = chars[mathrand.Intn(len(chars))] 41 } 42 return string(res) 43 }