Функция crypt () возвращает различный размер результата на другом сервере

Мне нужно перенести хешированный пароль на новый сервер со старого.
Старый сервер имеет php 5.4.4, а функция crypt () для пароля возвращает строку из 102 символов.
Мой новый сервер имеет php 5.5.7, а функция crypt возвращает строку из 34 символов.
На обоих серверах крипта вызывается без параметров

crypt($password);

При входе пользователя (на старом сервере) я использую этот код:

crypt($_POST['password'], $hash_password) == $hash_password

Теперь, если я копирую хэш-пароли на новый хостинг и вызываю этот метод для проверки правильности пароля, пароль никогда не совпадает.
Как я могу сделать, чтобы сделать тот же тип хеширования на этом другом сервере?

это пример двух зашифрованных паролей:

на старом сервере:

$6$kcPF.fPojej2$YF5Ui0nP8t5Wc0JVVEI9.JD2l/ZyLQGL6T5RN3E5oz3GGiSZoTBsbocMggLkdlBhO6Xe7cGdepW7bo6mKFjYx1

на новом сервере

$1$Sz1cDmU0$Z0uoEwnXH1NokqPwwQJsp/

2

Решение

Старый сервер использует алгоритм SHA256 для создания хэшей, но новый сервер, похоже, не поддерживает его; другими словами, постоянная CRYPT_SHA512 является 0,

В зависимости от того, как PHP установлен на новом сервере, вам может потребоваться проверить, libcrypt достаточно недавно или свяжитесь с хостинговой компанией, которая предоставляет сервер.

2

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

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

По вопросам рекламы [email protected]