hash - BCrypt 比较两个不相等的哈希值

标签 hash go passwords bcrypt

我有这个代码:

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/

相关文章:

linux - 根据内容将巨大的哈希文件分成一个文件(shell脚本)

android - SHA-256 哈希在 Android 中产生错误的结果

go - 如何正确读取 golang oauth2 的错误

parsing - Golang yaml 生成双项

Angular 表单和密码管理器

cryptography - 并行计算大文件的哈希码

php - 从其他用户领域生成盐

mysql - 将 Go 的零 time.Time 值插入 MySQL DATETIME 列错误

security - 如何安全登录gitlab中的私有(private)docker注册表?

browser - 浏览器如何对网站密码进行加密?