Ответ 1
Обновленный ответ 2016:
Победитель PHC (Конкурс Hays Hash) был Argon2. Хеширование паролей с помощью Argon2 - лучшая практика с 2016 года.
PHC работала с 2013 по 2015 год как открытый конкурс - такой же процесс, как NIST AES и SHA-3, и самый эффективный способ разработки криптового стандарта. Мы получили 24 кандидата, в том числе много отличных дизайнов, и один из победителей, Argon2, алгоритм, разработанный Алексом Бирюковым, Даниэлем Дину и Дмитрием Ховратовичем из Люксембургского университета.
Мы рекомендуем использовать Argon2 вместо устаревших алгоритмов.
Справочная реализация доступна в GitHub.
Обновленный ответ 2012:
Первоначальный ответ, который я дал ниже, когда-то считался лучшей практикой. Однако достижения в области технологий хэш-вычислений сделали эти схемы уязвимыми. Идти вперед, единственные безопасные схемы хэширования пароля - это итеративные хэши, такие как bcrypt и PBKDF2. Полный диалог см. В разделе анализ Джеффа Этвуда.
Оригинальный ответ 2009:
Я рекомендую сначала добавить к вашему паролю salt значение, а затем hashing в результате строки с достаточно сильной функцией хеширования, например SHA256. Это защищает от очевидных (простых текстовых паролей) и не столь очевидных (атака с использованием Rainbow tables).
Имейте в виду, что если вы храните пароли таким образом, вы не сможете получить потерянный пароль пользователя. Они смогут использовать пароли reset. Это связано с тем, что вы используете односторонний хэш. Но это ограничение, как правило, стоит компромисс для более безопасной системы хранения паролей. Даже если ваша база данных скомпрометирована, ваши пользовательские пароли будут по-прежнему чрезвычайно сложными и, возможно, непрактичными для восстановления с помощью атаки, будут атакующими.