【问题标题】:password_hash returns different value every timepassword_hash 每次返回不同的值
【发布时间】:2016-01-11 13:28:00
【问题描述】:

我正在制作一个登录系统,我想对密码进行哈希处理以使其更安全,但它每次都返回不同的哈希值,甚至无法使用 password_verify() 进行验证,这是我的代码:

$password = password_hash($password4, PASSWORD_DEFAULT);

这是我的验证代码:

if(password_verify($password4, $dbpassword))

【问题讨论】:

  • 你不应该那样使用password_hash()
  • 该断言是不正确的@ItzBenteThePig - 额外的散列会导致问题,而不是解决方案。想想你想要保护什么。 password_hash(),正确使用,提供随机盐和长哈希,需要数百年才能破解。
  • @JayBlanchard 对我来说,这些链接只是作为创建安全密码的指南,而不是散列。
  • 我回滚到您原来的问题,因为 stealth 编辑使您的功能似乎无法正常工作。额外的函数调用是让你陷入困境的原因,编辑它会改变问题的性质。

标签: php hash passwords php-password-hash


【解决方案1】:

所以让我们一次只做一个

但它每次都返回不同的哈希

就是这样。 password_hash 旨在每次生成随机盐。这意味着您必须单独分解每个哈希,而不是猜测所有内容都使用一种盐并获得巨大优势。

无需MD5 或进行任何其他散列。如果你想提高password_hash 的安全性,你会传递更高的成本(默认成本是 10)

$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);

至于验证

if(password_verify($password4, $dbpassword))

所以$password4 应该是您未散列的密码,$dbpassword 应该是您存储在数据库中的散列

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多