Better late than never.

golang的密码加密 - bcrypt

争取以后每一篇文章都备份记录在云笔记中!

安装

go get golang.org/x/crypto/bcrypt

# 如安装依赖包失败,请使用代理
export GOPROXY=https://goproxy.io,direct
or
export GOPROXY=https://goproxy.cn,direct

使用

  • 生成加密字符串
// 1、获取用户传来的pwd,使用字节切片转换
originPwd := []byte("password") // 用户传的实际密码值

// 2、调用 bcrypt.GenerateFromPassword 生成加密字符串
hashPwd, _ := bcrypt.GenerateFromPassword(originPwd, bcrypt.DefaultCost)

// 3、此时 hashPwd 为字节切片,实际加密字符串需使用string转换
string(hashPwd) // 可以将此加密串保存到数据库,可作为密码匹配验证
  • 验证密码是否匹配
// 1、将数据库中的加密串做字节切片转换
// $2a$10$oxOlhX8ju5eIwHZkjTwMX.4q64EhyjLtX2m32b2V3CP8yeqzQNVHa
byteHashPwd := []byte("$2sxxx....") // 实际的加密字符串

// 2、调用 bcrypt.CompareHashAndPassword 证密码是否匹配
// 第一个参数为通过字节切片转换的加密的哈希串、第二个参数为字节切片转换过的用户输入密码值
err := bcrypt.CompareHashAndPassword(byteHashPwd, originPwd)
// 没有错误则密码匹配
if err != nil {
    log.Println(err)
    return false
}

Other

  • 同样适用于Laravel生成的密码校验

-- END

写的不错,赞助一下主机费

扫一扫,用支付宝赞赏
扫一扫,用微信赞赏

暂无评论~~