bcrypt加密算法介绍

bcrypt算法对于同一个密码,每次生成的hash不一样

业务流程

  1. 对用户注册时传入的密码进行加密
//此方法生成hash值
HashAndSalt([]byte("password"))     //password为string类型
hashedPwdpasswordtrue
ComparePasswords(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 ComparePasswords(hashedPwd string, plainPwd []byte) bool {
	byteHash := []byte(hashedPwd)
	err := bcrypt.CompareHashAndPassword(byteHash, plainPwd)
	if err != nil {
		return false
	}
	return true
}