package main

import (
	"crypto/rand"
	"crypto/sha1"
	"fmt"

	"github.com/google/uuid"
)

func hash(b []byte) string {
	h := sha1.New()
	h.Write(b)
	sum := h.Sum(nil)
	armored := fmt.Sprintf("%x", sum)
	return armored
}

func randomString() (string, error) {
	b := make([]byte, 10)
	_, err := rand.Read(b)

	if err != nil {
		fmt.Printf("erro: %v", err)
		return "", err
	}

	armored := hash(b)
	return armored, err
}

func randomStringWithLength(length int) (string, error) {
	const (
		charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
	)
	lenCharset := byte(len(charset))
	b := make([]byte, length)
	rand.Read(b)
	for i := 0; i < length; i++ {
		b[i] = charset[b[i]%lenCharset]
	}
	return string(b), nil
}

func main() {
	s, _ := randomString()
	fmt.Printf("string aleatória 1: %s tamanho %d\n", s, len(s))

	s, _ = randomStringWithLength(40)
	fmt.Printf("string aleatória 2: %s tamanho %d\n", s, len(s))

	s = uuid.New().String()
	fmt.Printf("string aleatória 3: %s tamanho %d\n", s, len(s))

}
