PHP.net говорит, что md5 () и sha1 () непригодны для пароля?

http://www.php.net/manual/en/faq.passwords.php#faq.passwords.fasthash

Я храню пароли пользователей в базе данных MySQL в хэш-форме. Означает ли это, что это небезопасно? Если это так, каковы мои альтернативы?

Related of "PHP.net говорит, что md5 () и sha1 () непригодны для пароля?"

Следующий вопрос в часто задаваемых вопросах, который вы связали с ним, обсуждает его: как мне хэш-пароли, если общие хэш-функции не подходят?

Из FAQ:

Предлагаемый алгоритм для использования при хешировании паролей – это Blowfish, поскольку он значительно дороже вычислительных затрат, чем MD5 или SHA1, при этом все еще масштабируемо.

Следующий вопрос касается соли.

Ответили много раз. Вы можете использовать что-то вроде SHA-256 http://php.net/manual/en/function.hash.php, но вы должны также солить пароль перед его хэшированием, и вы можете итеративно хешировать пароль – так что в маловероятном случае это взломанный, он будет показывать только другой хэш (другими словами, взломать пароль занимает гораздо больше времени).

Как страница, которую вы связываете с рекомендациями, используйте функцию PHP crypt() с алгоритмом Blowfish. Также используйте различную соль для каждого вызова в crypt() . Вы можете сохранить значения солей в той же таблице базы данных, что и пароль, чтобы его можно было использовать, когда вы позже сравниваете пароли.

Чтобы вызвать crypt() с помощью алгоритма Blowfish, используйте соль, которая начинается с $2a$ , за которой следует число (параметр стоимости) между 04 и 31, за которым следует $ , а затем 22 цифры из алфавита ./0-9A-Za-z .

Руководство по PHP: crypt содержит более подробную информацию о том, как использовать crypt()

Прочтите следующий раздел ссылки: Как мне хэш-пароли, если общие хеш-функции не подходят?

Для конкретного примера того, почему использование простого, несозданного MD5 для хеширования паролей является плохой идеей, попробуйте ввести хэши MD5 некоторых достаточно распространенных паролей на сайт, например md5decrypter.co.uk или md5hashcracker.appspot.com или md5this.com . Или просто в Google , который индексирует большинство этих сайтов (и многие другие тоже).