Я использую:Это хороший/безопасный способ для хеширования паролей PHP
function generateHash($password) {
if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {
$salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);
return crypt($password, $salt);
}
}
для хеширования паролей, но его несовместимый для PHP версии ниже 5.3.7. Итак, я создал эту небольшую функцию для генерации и проверки паролей. Но поскольку я не профессионал в области безопасности, я хочу знать, достаточно ли она защищена или по-прежнему небезопасна.
Моя функция:
//$hash variable is also used to check weather we are creating or verifying passwords.
function password($password,$hash=FALSE){
$salt=array("hfuiliffa","wiaelfbs","usfewl","fr6j5","gwg8","bs4$","fgthwv");//An array of salts
if ($hash){
foreach ($salt as $s1)
foreach ($salt as $s2)
if ($s1.sha1($s2.$password)===$hash)
return true;
return FALSE;//If we are still here means time to return false.
}else {
return $salt[array_rand($salt)].sha1($salt[array_rand($salt)].$password);
}
}
Если вы используете> PHP 5.5 Вы можете использовать встроенную функцию PHP 'password_hash'. http://www.php.net/manual/en/function.password-hash.php –
Да, но я хочу, чтобы мои скрипты работали практически на всех версиях. –
Я бы рекомендовал создавать случайные соли, а не иметь их в массив. –