【问题标题】:PHP Password_Hash FunctionPHP Password_Hash 函数
【发布时间】:2014-06-29 10:35:22
【问题描述】:

我一直在阅读 PHP Password_Hash 函数的用法,它声明它会自动生成盐,不建议手动生成。

考虑到这一点,这是否意味着我可以执行以下代码:

    $password = password_hash('mypassword', PASSWORD_DEFAULT);

创建一个哈希和加盐的密码,除了存储到 MySQL 表列中之外不需要任何进一步的操作?

【问题讨论】:

    标签: php authentication passwords


    【解决方案1】:

    password_hash 同时生成盐和哈希。 然后它将它们组合成一个字符串,因此您不必像通常那样单独存储它们。

    这也是password_verify 只接受两个参数的原因:密码以及盐和哈希的组合。

    不建议您自己生成盐,因为您可能会做错。例如,您可以通过生成可预测的字符串或使其太短来错误地创建一个。此外,既然password_hash 函数已经这样做了,何必呢?如果用户更改密码,那么通常哈希和盐都会重新生成。

    【讨论】:

    • 这是否意味着 api 对所有密码使用相同的盐?我认为要单独存储盐以添加到密码中,然后生成散列密码。 verify_password 函数如何知道要在密码中添加什么盐?我可能在这里基本上遗漏了一些东西。
    【解决方案2】:

    是的。然后您可以检索它并使用 password_verify() 来检查用户提供的密码是否与存储的哈希匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      相关资源
      最近更新 更多