Разбираемся с хешами на примерах — кто как проверяет и что ловит
Недавно столкнулся с задачей проверить несколько паролей на совпадение с хешами в базе, и сразу вспомнил, насколько часто люди путают форматы и алгоритмы. Например, часто берут MD5, а потом удивляются, что «не совпадает» — а пароли там на самом деле с солью, или использовался SHA-256. Лично я сначала всегда стараюсь понять, как именно был сформирован хеш: есть ли соль, как она подставляется, и пробовать воспроизвести этот процесс.
При проверке хеша удобнее всего работать по шагам — сначала просто вычислить хеш «чистого» пароля, потом добавить соль, если она известна, потом проверить, не применяется ли какая-то дополнительная обработка (например, двойной хеш). Иногда помогает проверить готовые базы раскрытых хешей — если совпадения нет, может, стоит сменить подход.
А как тут обычно у вас? Кто-то использует специальные скрипты для перебора вариантов? Или просто рядом базы держит? Расскажите, с какими фишками чаще всего работаете, чтобы не тратить время на бесполезные попытки?
Раньше все проще было — MD5 да и все, без заморочек с солью. Сейчас уже такие схемы нагородили, что без понимания, как именно хеш сделан, один хрен не проверишь. Я тоже сначала пробую стандартные хеши, потом добавляю соль или повторно хеширую, как будто с двойным дном играешь. Без базы раскрытых паролей вообще тёмный лес – в такой работе маленький опыт быстро выручает.
Ага, двойной хеш и соль – это как игра в прятки для паролей, только сложнее. Иногда проще сдаться и просто держать под рукой нормальную базу, чем гадать, что там в исходном коде на самом деле.