摒弃世俗浮躁
追求技术精湛

Golang笔记(九):加密/信息摘要(bcrypt)

说明

Golang 官方包 crypto/bcrypt 是非常棒的密码加密解决方案,同一个字符串,例如说 abc123456 ,每一次加密出来的结果都不一样,也就是不可逆。这样杜绝了黑客拿到加密数据以后倒推数据的可能。

如何使用 bcrypt 包?

  1. 首先我们将 bcrypt 封装到新建的 password 包中,并统一在这个包里做好错误处理;
  2. 利用 GORM 提供的模型钩子,在创建和更新时对密码进行加密;
  3. 登录时拿用户提交的明文密码与数据库里的加密过的密码进行配对;

底层包 password 包含以下方法:

方法名称说明
password.Hash使用 bcrypt 对密码进行加密
password.CheckHash对比明文密码和数据库的哈希值
password.IsHashed判断字符串是否是哈希过的数据

因模型更新的钩子里无法判断某个字段是否使用了新的值,故统一将使用 password.IsHashed 来判断,没有哈希过的,直接加哈希就行。接下来在代码中看会比较直观一点。

安装

$ go get golang.org/x/crypto/bcrypt
赞(1) 打赏
未经允许不得转载:时光日记 » Golang笔记(九):加密/信息摘要(bcrypt)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏