// Created on savesnippets.com · https://savesnippets.com/qA6jWZev8S4Vqu package main import ( "crypto/rand" "encoding/base64" "encoding/hex" "fmt" ) func randomBytes(n int) ([]byte, error) { b := make([]byte, n) _, err := rand.Read(b) return b, err } func RandomHex(n int) string { b, _ := randomBytes(n) return hex.EncodeToString(b) } func RandomURLToken(n int) string { b, _ := randomBytes(n) return base64.RawURLEncoding.EncodeToString(b) } func main() { fmt.Println(RandomHex(16)) // 32-char hex string fmt.Println(RandomURLToken(32)) // URL-safe ~43-char token // ⚠️ NEVER use math/rand for secrets — its sequence is predictable. }