package utils import ( "crypto/rand" "encoding/base64" mt "math/rand" "golang.org/x/crypto/bcrypt" ) func PasswordHash(password string) (string, error) { bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) return string(bytes), err } func PasswordVerify(password, hash string) bool { err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) return err == nil } // $sha-256$salt-key$hash-abcd // $sha-512$salt-key$hash-abcd const ( saltSize = 16 delmiter = "$" ) func RandSecret(min int, max int) (string, error) { rb := make([]byte, randInt(min, max)) _, err := rand.Read(rb) if err != nil { return "", err } return base64.URLEncoding.EncodeToString(rb), nil } func randInt(min int, max int) int { return min + mt.Intn(max-min) }