Функция crypt () не возвращает хеш-значение в PHP 7.0

У меня было что-то вроде этого (скопировано с http://www.gregboggs.com/php-blowfish-random-salted-passwords/)

        $Blowfish_Pre = '$2a$05$';
$Blowfish_End = '$';
$bcrypt_salt = $Blowfish_Pre . $salt . $Blowfish_End;
$hashed_password = crypt($password, $bcrypt_salt);

echo $salt . '<br>';
echo $password . '<br>';
echo $bcrypt_salt . '<br>';
echo $hashed_password . '<br>';
echo "end";

Когда я запускаю тест, получается, что значение $hashed_password точно так же, как $bcrypt_salt, в то время как $salt, $password, а также $bcrypt_salt все возвращаемые значения, как и ожидалось. Как это исправить?

1

Решение

Извините, это было неправильно: «05 $» в «pre» — это слишком много. Попробуй без.

Руководство (http://php.net/manual/en/function.crypt.php) говорит:

CRYPT_BLOWFISH — хеширование Blowfish с солью следующим образом: «$ 2a $»,
«$ 2x $» или «$ 2y $», двухзначный параметр стоимости, «$» и 22 символа
из алфавита «./0-9A-Za-z».

Использование такой соляной работы длиной 22 символа:

echo crypt('secret', '$2a$05$1234567890123456789012$');
$2a$05$123456789012345678901u.97m5mwuxOR3RvRKYm9sasohx5Mnzwq

Всегда используйте случайный хеш, выше был только пример!

Если вам не нужна версия «2a» для blowfish, я бы рекомендовал использовать следующее, поскольку оно совместимо с crypt () и генерирует случайную соль:

echo password_hash("secret", PASSWORD_BCRYPT);

П.С .: При чтении подобных вещей в руководстве я бы рекомендовал вообще больше не использовать PHP. Разве они не могут просто генерировать исключение, как любой другой вменяемый API?

Использование символов за пределами этого диапазона в соли вызовет crypt ()
вернуть строку нулевой длины.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector