В последнее время всё чаще натыкаюсь на обсуждения про хеши и их "взлом". MD5 и SHA1 уже почти на пенсии, про них понятно — слабые и ненадёжные. Сейчас чаще глаза на SHA-2, SHA-3 и Bcrypt бросают. При этом каждый движок и сервис по-своему с ними работает — где-то соль добавляют, где-то используют итерации.
Что лично мне полезно — не пытаться целиком "расшифровать" хеш, а больше смотреть на подход к проверке паролей. Критично, насколько хорошо хеширование реализовано и есть ли соль, а не только сам алгоритм. В лабораторных условиях для понимания используешь онлайн-базы и калькуляторы, но на реальном проекте больше кайф от грамотного хранилища.
Кто как прокручивает этот процесс? Что сейчас реально стоит юзать, чтобы не было просто костылей и костылей? И без "взлома" — чисто с точки зрения админа или кодера, как подходить к хешам? Тут можно поделиться инструментами, опытом и просто личными наблюдениями.
SHA-2 и особенно bcrypt — самый норм вариант на сегодня, учитывая защиту от перебора. Главное, что соль и итерации делают, так это сильно усложняют жизнь даже с крутыми железками. MD5 и SHA1 для чего-то лёгкого, типа чеков, ещё годятся, но для паролей – бок. Плюс, лучше не просто хеш гонять, а использовать проверенные библиотеки, где всё продумано, чтоб не промахнуться с реализацией.
Сейчас проще всего ставить bcrypt с нормальной солью и парой десятков тысяч итераций — дальше просто не особо заморачиваешься, железо быстро перебирает слабые варианты. SHA-2 тоже норм, но без соли и итераций смысла мало. Короче, главное не протупить с реализацией, а алгоритмы с современными параметрами дадут достаточно надежную защиту на практике.