Найти в Дзене
Все обо всём

md5 или sha1 в php. Чем хэшировать пароль?

Ни md5, ни sha1 не рекомендуются для создания паролей на PHP. Оба алгоритма хэширования считаются устаревшими и не безопасными для хранения паролей, так как они могут быть легко подвержены атакам перебора или использования готовых таблиц радужных хэшей. Вместо этого рекомендуется использовать более безопасные алгоритмы хэширования, такие как password_hash() и password_verify(), которые предоставляются встроенными функциями в PHP. Пример использования password_hash() и password_verify(): $password = 'my_password';
// Создание хэша пароля
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// Проверка пароля
if (password_verify($password, $hashedPassword)) {
// Пароль верный
} else {
// Пароль неверный
} Функция password_hash() использует сильный алгоритм хэширования, который автоматически выбирается в зависимости от настроек сервера. Она также генерирует уникальную соль для каждого хэшированного пароля, что делает атаки перебором или использованием таблиц радужных хэшей намног
иллюстрация https://allaboutknit.ru/
иллюстрация https://allaboutknit.ru/

Ни md5, ни sha1 не рекомендуются для создания паролей на PHP. Оба алгоритма хэширования считаются устаревшими и не безопасными для хранения паролей, так как они могут быть легко подвержены атакам перебора или использования готовых таблиц радужных хэшей.

Вместо этого рекомендуется использовать более безопасные алгоритмы хэширования, такие как password_hash() и password_verify(), которые предоставляются встроенными функциями в PHP.

Пример использования password_hash() и password_verify():

$password = 'my_password';
// Создание хэша пароля
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// Проверка пароля
if (password_verify($password, $hashedPassword)) {
// Пароль верный
} else {
// Пароль неверный
}

Функция password_hash() использует сильный алгоритм хэширования, который автоматически выбирается в зависимости от настроек сервера. Она также генерирует уникальную соль для каждого хэшированного пароля, что делает атаки перебором или использованием таблиц радужных хэшей намного сложнее.

Функция password_verify() используется для проверки, соответствует ли указанный пароль хэшу.

Использование этих функций обеспечит более безопасное хранение паролей в вашем приложении.

Почему password_hash() так хороша?

Функция password_hash() является хорошей практикой для создания безопасных хэшей паролей по нескольким причинам:

1. Сильные хэш-алгоритмы: password_hash() использует сильные алгоритмы хэширования, такие как bcrypt, Argon2 или SHA-3. Эти алгоритмы являются сложными и медленными для атак перебором, а также обеспечивают высокую стойкость к различным видам атак, включая атаки с использованием готовых таблиц радужных хэшей.

2. Уникальная соль: каждый хэшированный пароль, созданный с помощью password_hash(), содержит уникальную соль, которая генерируется автоматически для каждого пароля. Соль добавляется к паролю перед хэшированием, что делает атаки с использованием готовых таблиц радужных хэшей невозможными.

3. Расширяемость: password_hash() использует форматированный хэш, который включает информацию о выбранном алгоритме, соли и других параметрах. Это обеспечивает возможность легкого обновления алгоритма хэширования в будущем, без необходимости перехэширования всех существующих паролей.

4. Простота использования: password_hash() предоставляет простой и удобный интерфейс для создания хэшей паролей. Она автоматически выполняет все необходимые операции, включая генерацию соли и выбор подходящего алгоритма хэширования, что упрощает задачу безопасного хранения паролей.

Все эти факторы делают функцию password_hash() предпочтительным выбором для создания безопасных хэшей паролей в PHP.