这是在php中散列密码的好方法吗?
我在一些网站上读到关于用户密码的信息,我想出了这个办法,但我想知道这是不是一个好办法 我知道他们的其他方式更简单,但只是出于好奇这是在php中散列密码的好方法吗?,php,hash,Php,Hash,我在一些网站上读到关于用户密码的信息,我想出了这个办法,但我想知道这是不是一个好办法 我知道他们的其他方式更简单,但只是出于好奇 function SanitizePassword($data) { $count = 255; $algorithm = "sha256"; $length = 1000; $salt = mcrypt_create_iv(100, MCRYPT_DEV_URANDOM); $hash = hash_pbkdf2($algo
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;
}
不要重新发明轮子,有更好的方法可以做到这一点,特别是从安全角度来看。 为了管理密码散列,您应该明确使用函数,即默认内置的php函数 密码散列API提供了一个易于使用的crypt()包装器,以便于以安全的方式创建和管理密码 您可以轻松加密密码
$hash = password_hash("securePasswordChangeIt", PASSWORD_BCRYPT);
if (password_verify('securePasswordChangeIt', $hash)) {
echo "Yeah";
}
然后你可以检查你的密码
$hash = password_hash("securePasswordChangeIt", PASSWORD_BCRYPT);
if (password_verify('securePasswordChangeIt', $hash)) {
echo "Yeah";
}
无论如何,这只适用于PHP>=5.5.0
但是对于
PHP>=5.3.7
也有一个复古兼容的版本。PHP有一种内置的方式来散列密码,这种方式既安全又具有前瞻性。使用它。此外,不要重新发明轮子,特别是当它涉及到密码的时候。你(或大多数不是bruce schneier的人)成功的几率非常低。hash_pbkdf2
是一个很好的方法,但是对于phppassword\u hash
和password\u verify
来说,把所有东西都打包好<代码>$count可能较低,请尝试约100毫秒。此外,散列\u hmac
在代码中不是必需的。