2013-02-22 4 views
4

Код:Различные версии PHP различных результатов склепа()

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 содержит свою собственную реализацию и будет использовать это , если система не имеет поддержки для одного или нескольких алгоритмов ,

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

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

+1

Возможно, это поможет: http://www.php.net/security/crypt_blowfish.php –

+0

Я нашел это http://bugs.php.net/bug.php?id=60073&edit=1 – Kubol

+1

Эта ошибка, с которой вы связаны для ... не является ошибкой. Прочтите нижнюю часть файла для объяснения, показывающего это. >> «Вы получили этот вывод на ранних версиях PHP, где CRYPT_BLOWFISH не поддерживался, или, возможно, была использована ошибка с ошибкой ». – Jon

ответ

1

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