【发布时间】:2015-08-22 16:00:35
【问题描述】:
我意识到这并不安全,但我想这样做。
我有这段代码可以根据用户的输入生成密码 ($password)...
$salt = mcrypt_create_iv(22, MCRYPT_DEV_URANDOM);
$new_password = md5($salt . $password);
$new_password = $salt . $new_password;
这就是我尝试检查保存的密码的方式:
$split_salt = substr($saved_password, 0, 22);
$incomplete_password = md5($split_salt . $current_password);
$hashed_password = $split_salt . $incomplete_password;
if ($saved_password != $hashed_password) {
$error = "error";
} else {
//Validated
}
据我所知,这应该可行。但是,我得到的是错误而不是验证。这是否与 MCRYPT 不能准确生成 22 个字符有关?
【问题讨论】:
-
我将
$password和$current_password都硬编码为相同的值。并将$split_salt = substr($saved_password, 0, 22)更改为$split_salt = substr($new_password, 0, 22)并通过验证。您输入的$current _password或$saved_password' from database可能有问题??
标签: php hash md5 salt password-hash