bcrypt加密算法介紹
bcrypt算法對於同一個密碼,每次生成的hash不一樣
業務流程
對用戶注冊時傳入的密碼進行加密
//此方法生成hash值
HashAndSalt([]byte("password")) //password為string類型
將第一次生成的密碼hash值存入數據庫
密碼驗證
hashedPwd為保存在數據庫中的密碼hash,password為前端傳過來要驗證的密碼
ComparePasswords 方法返回true說明密碼驗證通過
ValidatePasswords(hashedPwd string,[]byte("password"))
封裝加密和驗證方法
package utils
import (
"golang.org/x/crypto/bcrypt"
)
// 加密密碼
func HashAndSalt(pwd []byte) string {
hash, err := bcrypt.GenerateFromPassword(pwd, bcrypt.MinCost)
if err != nil {
}
return string(hash)
}
// 驗證密碼
func ValidatePasswords(hashedPwd string, plainPwd []byte) bool {
byteHash := []byte(hashedPwd)
err := bcrypt.CompareHashAndPassword(byteHash, plainPwd)
if err != nil {
return false
}
return true
}
鏈接:http://events.jianshu.io/p/156bed22328f