我想知道是否可以/明智地在我的网站上为我的用户密码使用两次password_hash。Double password_hash php
因此,让我们这样说:
在我的网站用户注册,他们输入密码,我们将调用这个
input
。在创建帐户,密码是
$firstHash = password_hash($input, PASSWORD_BCRYPT)
(例如起见,让我们说 这个散列为“thisFirstHash”一旦他们的密码散列,它再次散列
$firstHash = password_hash($firstHash, PASSWORD_BCRYPT)
(例如着想,让 说这个散列为“thisSecondHash”)这第二个哈希是什么,是存储在数据库中,所以现在当他们 登录,服务器解密哈希散列。
当用户登录时,他们再次输入密码,我们再次将 调用那么这个
input
服务器必须重新加密输入与保存 哈希
$loginHash1 = password_hash($input, PASSWORD_BCRYPT)
服务器比较比较新
loginHash1
变量与保存 哈希password_verify($loginHash1,"thisSecondHash")
如果第一个哈希值匹配,比较第二哈希
password_verify($input,"thisFirstHash")
我不能完全得到这个在我小的测试环境中正常工作,我怀疑它是做换汤不换药的输入时,随机盐是在登录阶段不同。
所以我的问题是,
- 是否有可能做到这一点?
- 这样做有益吗?
请不要__roll你自己的密码散列。 PHP提供['password_hash()'](http://php.net/manual/en/function.password-hash.php) 和['password_verify()'](http://php.net/manual/) en/function.password-verify.php)请使用它们,我可能想使用你的网站有一天 这里有一些[关于密码的好主意](https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet ) 如果您使用5.5以前的PHP版本[此处提供了兼容包](https://github.com/ircmaxell/password_compat) – RiggsFolly
否 - 这不明智,并且不会增加安全性。 –
也许如果你把第一个散列结果反过来,然后用base64对它进行编码,然后散列那个....记住任意数量的步骤是安全性的关键 – Ray