LOADING

加载过慢请开启缓存 浏览器默认开启

go-密码加密

go-密码加密

使用官方提供的 golang.org/x/crypto/bcrypt 包加密。

golang/crypto: [mirror] Go 补充密码学库 (github.com)

bcrypt package - golang.org/x/crypto/bcrypt - Go Packages


bcrypt 是使用hash算法;是不可逆操作,也就是说不可能反向计算出明文。

bcrypt在生成密文时会添加一个随机串进行加盐;所以使用 bcrypt加密时,每次计算出的密文都是不一样的。

package utils

import (
 "fmt"
 "golang.org/x/crypto/bcrypt"
)

// hash 加密用户密码
func HashPwd(s string) string {
 b, err := bcrypt.GenerateFromPassword([]byte(s), bcrypt.DefaultCost)
 if err != nil {
  fmt.Printf("加密用户密码错误:%s\n", err.Error())
 }
 return string(b)
}

// 验证密码
func VerifyPwd(pwd, pwdHash string) bool {
 err := bcrypt.CompareHashAndPassword([]byte(pwdHash), []byte(pwd))
 if err != nil {
  // fmt.Println(err, "\n", err == bcrypt.ErrMismatchedHashAndPassword) //  true
  return false
 }
 return true
}