1.明文密码一般都会通过一套算法转成一条长长的字符串,密码验证这需要通过验证明文和加密字符串是否对应
2.go 有现成的hash算法包 "golang.org/x/crypto/bcrypt" 一般我们有一个工具包utils ,在工具里封装两个方法即可, 即 明文转成加密串 加密串和明文对比 两个方法
3.代码 在utils下建文件夹 和文件 utils/pwd/enter.go
enter.go 内容如下:
Go
package pwd
import (
"log"
"golang.org/x/crypto/bcrypt"
)
// 将明文密码转为 hash密码
func HashPwd(pwd string) string {
hash, err := bcrypt.GenerateFromPassword([]byte(pwd), bcrypt.MinCost)
if err != nil {
log.Println(err)
}
return string(hash)
}
// 对比hash密码 与明文密码是否为一对
func CheckPwd(hashPwd string, pwd string) bool {
byteHash := []byte(hashPwd)
bytePwd := []byte(pwd)
err := bcrypt.CompareHashAndPassword(byteHash, bytePwd)
if err != nil {
log.Println(err)
return false
}
return true
}