【问题标题】:Neccesary to fetch hash from database ? password_hash bcrypt [duplicate]需要从数据库中获取哈希? password_hash bcrypt [重复]
【发布时间】:2017-11-23 13:33:50
【问题描述】:

我使用 PHP 的 password_hash 和 bcrypt 算法来散列我的密码。它们在 MySQL 数据库中。

password_hash($password, PASSWORD_BCRYPT);

很明显,这个函数生成的每个哈希值都是不同的。但是真的有必要通过电子邮件/登录或其他方式识别用户以从数据库中获取他的哈希值,然后使用 PHP 的password_verify() 进行验证吗?

真的有必要做这个查询然后检查吗?

我的意思是,是否可以在之前和之后检查哈希以检查它是否与 MySQL 中的这个匹配?

或者别的什么?我记得几年前我用过类似检查内部查询的东西,比如

WHERE login = $login and pass = PASSWORD($password)

特别是我的意思是PASSWORD($password)

除了从数据库中获取用户的哈希值,然后使用password_verify() 验证此哈希值之外,还有其他选择吗?

【问题讨论】:

  • 无论如何,您都必须深入研究数据库。我不确定您如何想象 any 解决方案不会在这里涉及数据库调用。您的“检查哈希之前”会检查什么反对
  • @cee 好吧,在“传统”MD5 哈希或类似的“之前检查”(星号、星号、脚注、警告……)。
  • @deceze 您可以在使用 MD5 查询之前计算哈希值,但您仍然需要执行查询以查看哈希值是否与您的文件匹配。
  • 否,选择使用其他列匹配,然后使用password_verify('plain text', $hashed_from_db);测试密码

标签: php mysql hash bcrypt


【解决方案1】:

是的,这是必要的。您需要在散列期间生成的唯一盐(编码为散列的一部分)来进行比较。这也是该算法在密码存储方面如此强大的原因。

【讨论】:

  • 非常感谢:)。
猜你喜欢
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
相关资源
最近更新 更多