在我的Login PHP文件中有以下内容
$passwordInput = password_hash($passInput, PASSWORD_BCRYPT);
$passwordVerify = password_verify($userInput, $passwordInput);在我的Register PHP文件中,我有这个。
$passwordSign = password_hash($passSign, PASSWORD_BCRYPT);现在,基本上我让它散列密码,并在注册时将其自身插入到数据库中。事实就是如此。
但是,它无法验证这一点。这两个结果都给出了两个不同的哈希,我不知道我可能做错了什么。我还尝试让它再次散列输入,并检查数据库中的password_hash,但不起作用。
使用它们的正确方式是什么?
(另外,$passSign和$userInput是输入字段,它会获取用户名/密码)
发布于 2015-03-09 16:23:19
在注册时,您可以从用户输入中获取密码,并使用password_hash()生成其has
$hash = password_hash($_POST['password'], PASSWORD_BCRYPT);您可以在第三个参数中为其提供要使用的自定义盐,但文档recommends不能这样做:
Caution强烈建议您不要为此函数生成自己的salt。如果您没有指定,它将自动为您创建一个安全的盐。
您将此哈希值保存在数据库中。确保将其放入60个字符或更长的的CHAR/VARCHAR 字段中。
当用户想要登录时,您可以根据先前使用password_verify()保存的散列检查他们输入的密码
$auth = password_verify($_POST['password'], $hash);当然,您可以通过提供的用户名从数据库中获得正确的$hash值。
如果$auth为TRUE,则提供的密码与在注册上计算的其散列匹配,并且用户已通过身份验证。
https://stackoverflow.com/questions/28936141
复制相似问题