Как использовать функцию PHP crypt () со строкой соли SHA256 для генерации того же хеша, который генерировался бы, если бы SHA256 не поддерживался на сервере?

0

Мое веб-приложение использует функцию PHP crypt() для хэширования паролей. Я хотел использовать алгоритм SHA256, поэтому я создал солевые строки пользователей соответственно. Проблема в том, что я не понимал, что SHA256 не поддерживается на сервере, который я использовал (CRYPT_SHA_256). Я только что перенесла свое приложение на другой сервер, который поддерживает SHA256, и в основном никто из моих пользователей не может войти в систему, потому что их строки паролей и солевые строки генерируют разные хэши по сравнению с хэшами, созданными на предыдущем сервере.

Как вы считаете, лучшее решение могло бы не просить каждого пользователя изменить свои пароли?

Заранее спасибо, я ценю любые полезные идеи.

Теги:
login
password-hash
sha256
crypt

1 ответ

0

На самом деле функция crypt() должна иметь возможность проверять ваши существующие хеши, даже если они не являются SHA-256, как вы хотели создать. Поскольку API нового пароля использует функцию crypt(), возможно, даже будет возможно проверить ваши хэши с новыми функциями:

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);

Чтобы генерировать новые хеши, вы должны использовать новую функцию password_hash(), она автоматически создаст безопасную соль. Более того, он вычисляет хэширование BCrypt вместо SHA-256, которое не подходит для хэш-паролей.

// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню