Разные версии PHP разные результаты crypt()

Код:

echo $a = 'stackoverflow';
echo '<br>';
echo $b = '$2a$10$bf57caf7e1fa23e4b975ab';
echo '<br>CRYPT:<br>';
echo crypt($a, $b);

Полученные результаты:

PHP 5.2.5

stackoverflow
$2a$10$bf57caf7e1fa23e4b975ab
CRYPT:
$2.LaeiP21fsQ

PHP 5.4.4

stackoverflow
$2a$10$bf57caf7e1fa23e4b975ab
CRYPT:
$2a$10$bf57caf7e1fa23e4b975aOhXjTtYrqOYLfHsxdOxGRhF03.LtKewW 

Я хочу переместить скрипт на новый сервер с PHP 5.4.4 Я хотел бы получить тот же эффект, что и хэши 5.2.5, иначе я потеряю некоторые данные

Если я использую соль с окончанием $ - результат тот же

Я прочитал это:

Начиная с PHP 5.3.0, PHP содержит собственную реализацию и будет использовать ее, если система не поддерживает один или несколько алгоритмов.

Но алгоритм не должен отличаться.

Пожалуйста помоги.


person Kubol    schedule 22.02.2013    source источник
comment
Возможно, это поможет: php.net/security/crypt_blowfish.php   -  person Fabian Schmengler    schedule 22.02.2013
comment
Я нашел это bugs.php.net/bug.php?id=60073&edit=1   -  person Kubol    schedule 22.02.2013
comment
Та ошибка, на которую вы ссылаетесь ... не является ошибкой. Прочтите нижнюю часть файла для объяснения, показывающего это. ›› Вы получили этот вывод в более ранних версиях PHP, где CRYPT_BLOWFISH не поддерживался или, возможно, использовалась версия с ошибками.   -  person Jon    schedule 24.02.2013


Ответы (1)


До PHP 5.3.0 Blowfish был доступен только в том случае, если он был предоставлен вашей системной библиотекой C (и почти никто этого не делал). Передача соли Blowfish в системах, не имеющих реализации Blowfish, приводит к дерьму выбора алгоритма - обычно это хэш DES.

person TML    schedule 25.02.2013