diff --git a/utils/rand.go b/utils/rand.go index d9629e60..363f41b7 100644 --- a/utils/rand.go +++ b/utils/rand.go @@ -8,18 +8,32 @@ package utils import ( "crypto/rand" + r "math/rand" + "time" ) // RandomCreateBytes generate random []byte by specify chars. func RandomCreateBytes(n int, alphabets ...byte) []byte { const alphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" var bytes = make([]byte, n) - rand.Read(bytes) + var randby bool + if num, err := rand.Read(bytes); num != n || err != nil { + r.Seed(time.Now().UnixNano()) + randby = true + } for i, b := range bytes { if len(alphabets) == 0 { - bytes[i] = alphanum[b%byte(len(alphanum))] + if randby { + bytes[i] = alphanum[r.Intn(len(alphanum))] + } else { + bytes[i] = alphanum[b%byte(len(alphanum))] + } } else { - bytes[i] = alphabets[b%byte(len(alphabets))] + if randby { + bytes[i] = alphabets[r.Intn(len(alphabets))] + } else { + bytes[i] = alphabets[b%byte(len(alphabets))] + } } } return bytes