Browse Source

RandStr() is base62

pull/9/head
Jae Kwon 10 years ago
parent
commit
ca159b2726
1 changed files with 27 additions and 6 deletions
  1. +27
    -6
      common/random.go

+ 27
- 6
common/random.go View File

@ -1,12 +1,33 @@
package common
import "crypto/rand"
import (
"math/rand"
)
const (
strChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" // 62 characters
)
// Construts an alphanumeric string of given length.
func RandStr(length int) string {
b := make([]byte, length)
_, err := rand.Read(b)
if err != nil {
return ""
chars := []byte{}
MAIN_LOOP:
for {
val := rand.Int63()
for i := 0; i < 10; i++ {
v := int(val & 0x3f) // rightmost 6 bits
if v >= 62 { // only 62 characters in strChars
val >>= 6
continue
} else {
chars = append(chars, strChars[v])
if len(chars) == length {
break MAIN_LOOP
}
val >>= 6
}
}
}
return string(b)
return string(chars)
}

Loading…
Cancel
Save