Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是在php中散列密码的好方法吗?_Php_Hash - Fatal编程技术网

这是在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
是一个很好的方法,但是对于php
password\u hash
password\u verify
来说,把所有东西都打包好<代码>$count可能较低,请尝试约100毫秒。此外,
散列\u hmac
在代码中不是必需的。