Я разрабатываю API, используя PHP (Codeigniter) и Phils RESTserver. Я создаю хэш с помощью crypt () с паролем и солью.
Проблема в том, что хэш, являющийся результатом алгоритма crypt (), отличается на моей локальной машине и на сервере.
Он работает нормально локально, но не на сервере (короче). Я знаю, что пароль и соль одинаковы, потому что я их жестко запрограммировал.
Хэш из локальной машины:
$2a$10$g6J7CUjJvB0JpTd7UcrowePEbqp/oBmZEpd7vS.5HFYx38f08Tb/a
Хеш с сервера:
$2jkP2/LlC/H6
Что может быть неправильным?
(сервер работает centos 5).
Вероятно, ваша версия PHP не поддерживает хеширование blowfish для crypt. Вывод $ 2a $ показывает, что вы пытаетесь использовать CRYPT_BLOWFISH, который может быть недоступен на обеих платформах.
Исправлена ошибка в PHP 5.3.2:
Исправлено поведение Blowfish в недействительных раундах, чтобы вернуть строку «сбой» («* 0» или «* 1») вместо того, чтобы возвращаться к DES.
Поэтому я предполагаю, что хэш с вашего сервера возвращается к DES, так как он содержит только первые 2 символа вашей соли.