Crypt отличается на сервере, чем на локальной машине - PullRequest
2 голосов
/ 14 августа 2011

Я занимаюсь разработкой API с использованием PHP (Codeigniter) и Phils RESTserver.Я создаю хеш с помощью crypt () с паролем и солью.

Проблема в том, что хеш, являющийся результатом алгоритма crypt (), отличается на моей локальной машине и на сервере.

Работает нормально локально, но не на сервере (если коротко).Я знаю, что пароль и соль совпадают, потому что я пытался их жестко закодировать.

Хеш с локальной машины:

$2a$10$g6J7CUjJvB0JpTd7UcrowePEbqp/oBmZEpd7vS.5HFYx38f08Tb/a

Хеш с сервера:

$2jkP2/LlC/H6

Что может быть не так?

(сервер работает под управлением Centos 5).

1 Ответ

3 голосов
/ 14 августа 2011

Ваша версия PHP, вероятно, не поддерживает хеширование blowfish для крипты. $ 2a $ в выводе предполагает, что вы пытаетесь использовать CRYPT_BLOWFISH, который может быть недоступен на обеих платформах.

http://uk.php.net/crypt

Исправлена ​​ошибка в PHP 5.3.2:

Исправлено поведение Blowfish на недопустимых раундах для возврата строки «неудача» ("* 0" или "* 1") вместо возврата к DES.

Так что я думаю, что хеш с вашего сервера возвращается к DES, поскольку он содержит только первые 2 символа вашей соли.

...