我有这个代码:
u := models.Users{}
u = u.FindByEmail(登录.Email)
密码 := []byte(login.Password)
hashedPassword, err := bcrypt.GenerateFromPassword(密码, bcrypt.DefaultCost) 如果错误!= nil { panic (错误) }
err = bcrypt.CompareHashAndPassword(hashedPassword, []byte(u.Password)) fmt.Println(err)
我最终收到此错误:crypto/bcrypt:hashedPassword 不是给定密码的哈希
但是,我之前将模型保存为与“admin”具有相同的哈希值,但是当我运行应用程序时,它告诉我它不相等。
最佳答案
重读 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)
关于hash - BCrypt 比较两个不相等的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684259/