| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- 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)
- }
|