微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在PHP 5.5的新password_hash函数中随机生成的密码盐甚至有用吗?

我刚刚阅读了PHP 5.5中的新功能,它包括新的密码散列功能(http://www.php.net/manual/en/function.password-hash.php).现在,如果你看一下描述,它的认操作是随机生成一个密码盐,如果你没有指定.

但我不明白这是多么有用.因为如果您正在哈希密码以便安全存储,并且盐是随机的.然后,当您运行用户输入密码的字符串时,如果每次盐不同,则每次生成的散列都会不同.因此,您无法成功比较输入的有效密码与密码哈希的存储副本.

那么这怎么可能有用呢?

解决方法:

salt包含在哈希值中.

<?PHP

$hash = password_hash("password", PASSWORD_DEFAULT, ['salt' => 'saltsaltsaltsaltsaltsa']);
print_r(password_get_info($hash));
echo $hash;

输出

Array
(
    [algo] => 1
    [algoName] => bcrypt
    [options] => Array
        (
            [cost] => 10
        )

)

$2y$10$saltsaltsaltsaltsaltsOPRDjePxJkNp7mjBEve63IqKPFT7ehNG

如您所见,散列函数在散列本身中存储有关散列过程的信息.然后,password_verify()函数解析哈希并根据此信息验证密码.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐