package token import ( "crypto/rand" "crypto/sha256" "encoding/base64" "encoding/hex" "fmt" ) func GenerateURLSafe(size int) (string, error) { if size <= 0 { return "", fmt.Errorf("token size must be positive") } raw := make([]byte, size) if _, err := rand.Read(raw); err != nil { return "", fmt.Errorf("generate secure token: %w", err) } return base64.RawURLEncoding.EncodeToString(raw), nil } func HashSHA256(value string) string { sum := sha256.Sum256([]byte(value)) return hex.EncodeToString(sum[:]) }