package hasher import ( "crypto/rand" "crypto/sha256" "encoding/base32" ) type Token struct { Raw string Hash []byte } func GenerateToken() Token { randomBytes := make([]byte, 16) _, _ = rand.Read(randomBytes) plainText := base32.StdEncoding.WithPadding(base32.NoPadding).EncodeToString(randomBytes) hash := HashToken(plainText) return Token{ Raw: plainText, Hash: hash, } } func HashToken(plainTextToken string) []byte { hash := sha256.Sum256([]byte(plainTextToken)) return hash[:] }