Files
token-go/util/build.go
2023-05-05 22:46:20 +08:00

61 lines
1.2 KiB
Go

package util
import (
"crypto/rand"
"encoding/base64"
"fmt"
"strings"
)
func GenerateUUID() (string, error) {
uuid := make([]byte, 16)
_, err := rand.Read(uuid)
if err != nil {
return "", err
}
// set version number (4)
uuid[6] = (uuid[6] & 0x0f) | 0x40
// set variant bits (2)
uuid[8] = (uuid[8] & 0xbf) | 0x80
return fmt.Sprintf("%x-%x-%x-%x-%x", uuid[0:4], uuid[4:6], uuid[6:8], uuid[8:10], uuid[10:]), nil
}
func GenerateSimpleUUID() (string, error) {
uuid, err := GenerateUUID()
if err != nil {
return "", err
}
return strings.ReplaceAll(uuid, "-", ""), nil
}
func GenerateRandomString32() (string, error) {
data := make([]byte, 24)
_, err := rand.Read(data)
if err != nil {
return "", err
}
return base64.URLEncoding.EncodeToString(data)[:32], nil
}
func GenerateRandomString64() (string, error) {
data := make([]byte, 48)
_, err := rand.Read(data)
if err != nil {
return "", err
}
return base64.URLEncoding.EncodeToString(data)[:64], nil
}
func GenerateRandomString128() (string, error) {
data := make([]byte, 96)
_, err := rand.Read(data)
if err != nil {
return "", err
}
return base64.URLEncoding.EncodeToString(data)[:128], nil
}