Files
2024-12-06 16:10:35 +03:00

37 lines
651 B
Go

package utils
import (
"crypto/rand"
"encoding/base64"
"golang.org/x/crypto/bcrypt"
)
func GenerateToken(l int) (string, error) {
bytes := make([]byte, l)
_, err := rand.Read(bytes)
if err != nil {
return "", err
}
token := base64.StdEncoding.EncodeToString(bytes)
return token, nil
}
func EncodeToken(token string) (string, error) {
encodedToken, err := bcrypt.GenerateFromPassword([]byte(token), bcrypt.DefaultCost)
if err != nil {
return "", err
}
return string(encodedToken), nil
}
func CompareToken(hash string, token string) bool {
eq := bcrypt.CompareHashAndPassword([]byte(hash), []byte(token))
return eq == nil
}