Какие хэш-функции сейчас наиболее часто применяются?
В одних источниках говорят, что n-ую функцию лучше уже не использовать, в других - наоборот, а потом в комментариях начинается целая война. MD5, SHA1, SHA2... что лучше?
Stalker_RED, я читал в рекомендациях, что нужно использовать не просто хэш-функцию, но и соль, которую, например, можно генерировать на основе id пользователя, а сверху использовать хэш-функцию еще раз или даже больше двух раз. Говорят, что так взломщику понадобятся годы, чтобы отгадать пароль. Однако, все хуже, если пользователь использует слова в качестве пароля. Тогда, наверное, символы пароля надо как-то перемешивать, чтобы, скажем, "fish" стало "ifhs", прежде чем отдавать пароль на обработку хэш-функции.
А перемешивать буквы вручную - не стоит, в хэш-функциях с этим и так все хорошо.
Я имел в виду, что пользователи могут устанавливать простые пароли (чтобы проще было запомнить), например, 'mypassword'. А в радужных таблицах могут быть хэши, которые совпадут с хэшем этого пароля (потому что пароль легкий), а значит взломщик сможет подобрать пароль. Или соли достаточно? Просто я думал, что после того как пользователь установил пароль, то можно с помощью PHP-функции переставить местами символы пароля, а потом отправить результат хэш-функции вместе с солью.
MD5 - скомпрометирован
SHA1 - безопасен, но есть атаки, позволяющие создать несколько документов с одинаковым хэшем, отличающиеся только одним блоком посерёдке
SHA256 - пока что безопасный, TLS-сертификаты нынче используют его в качестве хэш-функции (раньше использовался SHA1)
Александр, далеко не факт, что SHA-512 намного безопаснее SHA-256, там всего лишь чуть больше раундов, немного другие значения и 64-битные переменные вместо 32-битных, а алгоритм всё равно один и тот же. Но то, что SHA-512 более устойчива к коллизиям по сравнению с SHA-256 - это факт.