这是在PHP中散列密码的好方法吗?

时间:2016-07-20 18:22:57

标签: php hash

尝试以良好的方式对用户密码进行哈希处理,并且我在某些网站上阅读了这些内容并且我想出了这个,但我想知道这是否是一个很好的方法来做到这一点?

我知道他们的其他方式更简单,但仅仅是为了好奇心。

function SanitizePassword($data) {

    $count = 255;
    $algorithm = "sha256";
    $length = 1000;
    $salt = mcrypt_create_iv(100, MCRYPT_DEV_URANDOM);
    $hash = hash_pbkdf2($algorithm, $data, $salt, $length, $count);
    $key = "stackoverflow";
    $secret = hash_hmac($algorithm, $hash, $key);

    echo $secret;
}

1 个答案:

答案 0 :(得分:1)

不要重新发明轮子,有更好的方法可以做到这一点,特别是从安全角度来看。 你绝对应该使用php password hashing函数,默认内置php函数来管理密码哈希。

  

密码散列API提供了一个易于使用的crypt()包装器,可以以安全的方式轻松创建和管理密码。

您可以轻松加密密码

$hash = password_hash("securePasswordChangeIt", PASSWORD_BCRYPT);

然后你可以检查你的密码

if (password_verify('securePasswordChangeIt', $hash)) {
    echo "Yeah";
}

无论如何,这只适用于PHP >= 5.5.0

PHP >= 5.3.7

还有一个复古兼容版本https://github.com/ircmaxell/password_compat