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  }