我想使用便携式 PHP 密码散列框架来散列密码。但我发现它的演示不使用盐来散列密码。但它使用虚拟盐来检查密码,我觉得这很奇怪,我根本不明白这个想法,
$dummy_salt = '$2a$08$1234567890123456789012';
if (isset($dummy_salt) && strlen($hash) < 20)
$hash = $dummy_salt;
我想知道,如果我想使用可以生成唯一盐并将其存储在我的数据库中的每个用户的约定方法,我该如何使用便携式 PHP 密码散列框架来生成盐?
这是我用来散列密码的函数,但有人告诉我 sha512 与 sha1 有相同的问题,明智的做法是信任像便携式 PHP 密码散列框架这样的专家,
function hash_sha512($phrase,&$salt = null)
{
//$pepper = '!@#$%^&*()_+=-{}][;";/?<>.,';
if ($salt == '')
{
$salt = substr(hash('sha512',uniqid(rand(), true).PEPPER_KEY.microtime()), 0, SALT_LENGTH);
}
else
{
$salt = substr($salt, 0, SALT_LENGTH);
}
return hash('sha512',$salt.PEPPER_KEY.$phrase);
}
如果您有任何想法,请告诉我。谢谢。