62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package random
|
|
|
|
import (
|
|
"github.com/google/uuid"
|
|
"math/rand"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
func GetUUID() string {
|
|
code := uuid.New().String()
|
|
code = strings.Replace(code, "-", "", -1)
|
|
return code
|
|
}
|
|
|
|
const keyChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
const keyNumbers = "0123456789"
|
|
|
|
func init() {
|
|
rand.Seed(time.Now().UnixNano())
|
|
}
|
|
|
|
func GenerateKey() string {
|
|
rand.Seed(time.Now().UnixNano())
|
|
key := make([]byte, 48)
|
|
for i := 0; i < 16; i++ {
|
|
key[i] = keyChars[rand.Intn(len(keyChars))]
|
|
}
|
|
uuid_ := GetUUID()
|
|
for i := 0; i < 32; i++ {
|
|
c := uuid_[i]
|
|
if i%2 == 0 && c >= 'a' && c <= 'z' {
|
|
c = c - 'a' + 'A'
|
|
}
|
|
key[i+16] = c
|
|
}
|
|
return string(key)
|
|
}
|
|
|
|
func GetRandomString(length int) string {
|
|
rand.Seed(time.Now().UnixNano())
|
|
key := make([]byte, length)
|
|
for i := 0; i < length; i++ {
|
|
key[i] = keyChars[rand.Intn(len(keyChars))]
|
|
}
|
|
return string(key)
|
|
}
|
|
|
|
func GetRandomNumberString(length int) string {
|
|
rand.Seed(time.Now().UnixNano())
|
|
key := make([]byte, length)
|
|
for i := 0; i < length; i++ {
|
|
key[i] = keyNumbers[rand.Intn(len(keyNumbers))]
|
|
}
|
|
return string(key)
|
|
}
|
|
|
|
// RandRange returns a random number between min and max (max is not included)
|
|
func RandRange(min, max int) int {
|
|
return min + rand.Intn(max-min)
|
|
}
|