首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用password_hash和password_verify

使用password_hash和password_verify
EN

Stack Overflow用户
提问于 2015-03-09 14:14:34
回答 1查看 12.3K关注 0票数 8

在我的Login PHP文件中有以下内容

代码语言:javascript
复制
$passwordInput = password_hash($passInput, PASSWORD_BCRYPT);
$passwordVerify = password_verify($userInput, $passwordInput);

在我的Register PHP文件中,我有这个。

代码语言:javascript
复制
$passwordSign = password_hash($passSign, PASSWORD_BCRYPT);

现在,基本上我让它散列密码,并在注册时将其自身插入到数据库中。事实就是如此。

但是,它无法验证这一点。这两个结果都给出了两个不同的哈希,我不知道我可能做错了什么。我还尝试让它再次散列输入,并检查数据库中的password_hash,但不起作用。

使用它们的正确方式是什么?

(另外,$passSign和$userInput是输入字段,它会获取用户名/密码)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-09 16:23:19

在注册时,您可以从用户输入中获取密码,并使用password_hash()生成其has

代码语言:javascript
复制
$hash = password_hash($_POST['password'], PASSWORD_BCRYPT);

您可以在第三个参数中为其提供要使用的自定义盐,但文档recommends不能这样做:

Caution强烈建议您不要为此函数生成自己的salt。如果您没有指定,它将自动为您创建一个安全的盐。

您将此哈希值保存在数据库中。确保将其放入60个字符或更长的的CHAR/VARCHAR 字段中。

当用户想要登录时,您可以根据先前使用password_verify()保存的散列检查他们输入的密码

代码语言:javascript
复制
$auth = password_verify($_POST['password'], $hash);

当然,您可以通过提供的用户名从数据库中获得正确的$hash值。

如果$authTRUE,则提供的密码与在注册上计算的其散列匹配,并且用户已通过身份验证。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28936141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档