mirror of
https://github.com/screego/server.git
synced 2026-04-22 23:47:03 +08:00
30 lines
584 B
Go
30 lines
584 B
Go
package util
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"math/big"
|
|
)
|
|
|
|
func RandString(length int) string {
|
|
res := make([]byte, length)
|
|
for i := range res {
|
|
index := randIntn(len(tokenCharacters))
|
|
res[i] = tokenCharacters[index]
|
|
}
|
|
return string(res)
|
|
}
|
|
|
|
var (
|
|
tokenCharacters = []byte("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_!@#$%^&*()){}\\/=+,.><")
|
|
randReader = rand.Reader
|
|
)
|
|
|
|
func randIntn(n int) int {
|
|
max := big.NewInt(int64(n))
|
|
res, err := rand.Int(randReader, max)
|
|
if err != nil {
|
|
panic("random source is not available")
|
|
}
|
|
return int(res.Int64())
|
|
}
|