mirror of
				https://github.com/weloe/token-go.git
				synced 2025-10-31 10:56:31 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| }
 | 
