【发布时间】:2013-11-08 21:02:00
【问题描述】:
我修改了我的旧帖子。我尝试了 crypt() 函数,现在尝试使用 password_hash() 和 password_verify() 来验证来自数据库的加密密码,但是在每次调用时,password_hash() 函数会重新调整不同的加密字符串,而 password_verify() 无法匹配它。
我就是这样做的。
//please ignore the syntax error if any
$data = '11';
$dbpass = password_hash($data, PASSWORD_BCRYPT);
echo $dbpass; // displays the random strings on each page refresh.
一旦密码被保存到数据库中,在登录过程中不匹配。下面是我的实际功能。
private function process_data($password){
$password = __STR.$password.__STR;
return password_hash($password, PASSWORD_BCRYPT);
}
private function processed($login_password, $dbpassword){
$login_password = __STR.$login_password.__STR;
return password_verify($login_password, $dbpassword);
}
在每次为密码创建哈希字符串的函数调用中,该函数下一次返回不同的字符串。
【问题讨论】:
-
请阅读为什么不应该使用 MD5 来散列密码:php.net/manual/en/faq.passwords.php
-
我相信(并且在很多地方都读过)最好给每个密码自己的盐。
-
同意你的看法。我已经看到 MD5 加密的反向在互联网上很容易获得。但是我尝试在其中添加盐,以使黑客很难弄清楚这个密码是什么。这不是个好主意吗?我总是寻求专家意见。
-
@HunzaAli - 根据您的新问题更新了我的答案。
-
另见 Openwall 的 PHP password hashing framework (PHPass)。它的便携性和强化了对用户密码的一些常见攻击。
标签: php security passwords php-password-hash