BCrypt比较两个哈希不相等

时间:2015-11-13 01:01:49

标签: hash go passwords bcrypt

我有这段代码:

u:= models.Users {}

u = u.FindByEmail(login.Email)

密码:= []字节(login.Password)

hashedPassword,错误:= bcrypt.GenerateFromPassword(密码,bcrypt.DefaultCost)    if err!= nil {        恐慌(ERR)    }

err = bcrypt.CompareHashAndPassword(hashedPassword,[] byte(u.Password))    fmt.Println(ERR)

我最终收到此错误:crypto / bcrypt:hashedPassword不是给定密码的哈希值

但是我之前保存的模型与“admin”具有相同的哈希值,但是当我运行我的应用程序时,它告诉我它不相等。

1 个答案:

答案 0 :(得分:5)

仔细阅读docs

CompareHashAndPassword将bcrypt哈希密码与其可能的纯文本等效项进行比较。成功时返回nil,或者失败时返回错误。

基本上,它是说你应该将你存储的哈希与纯文本密码进行比较。

你可能想要:

u := models.Users{}

u = u.FindByEmail(login.Email)

plainPassword := []byte(login.Password)
// Assumes that u.Password is the actual hash and that you didn't store plain text password.
err = bcrypt.CompareHashAndPassword([]byte(u.Password), plainPassword)

fmt.Println(err)