В криптографии и расшифровке хешей багать можно по-разному, и многие неосознанно повторяют одинаковые ляпы. Например, часто запускают проверку хеша с неправильной солью или вообще без неё — тогда вся задумка уходит в тар-тарары. Ещё классика — попытка дешифровать хеш прямолинейно, как будто это шифр, а не односторонняя функция, и надеяться получить исходник (нет, так не работает).
Типичная ошибка — использование устаревших алгоритмов (MD5, SHA1), которые вроде бы «типа» можно взломать, но если хочешь честно проверить — стоит сразу гнаться за современными sha256, bcrypt или Argon2. Это не только про безопасность, а и про практичность — тратить время на что-то мертвое бессмысленно.
Проверять хеш надо всегда с учетом того, как именно он был создан: соль, параметры работы, длина входа и тд. В противном случае даже правильный код не даст совпадения. Рекомендую в том же коде выводить лог параметров хеширования, чтобы не гадать потом, почему не сходится.
Накатал себе скрипт с bcrypt, забыл учесть параметры и постоянно получал ошибку валидации, пока не выяснил, что версия библиотеки чинит алгоритм именно с дефолтными настройками. По-моему, на практике главное — внимательность к деталям и понимание, что хеши — не шифры, а сигнатуры и контрольные суммы.
Кто еще натыкался на приколы в этой теме? Как решали?