Хеши и криптография для старта — что реально важно знать
Появилась куча вопросов по хешам и криптографии, решил поделиться тем, что сам понял на начальном этапе. Если коротко — хеши не шифруют, а преобразуют данные в фиксированную длину, чтобы проверить целостность или пароли хранить. Расшифровывать хеши в классическом смысле не получится, но можно пытаться подобрать исходник через разные техники (словари, брутфорс), если алгоритм слабый.
Что выбирать — MD5, SHA-1, SHA-256 или что-то новее? MD5 и SHA-1 уже сильно не советуют, потому что коллизии найти проще, а значит, надежность хромает. SHA-256 и выше — уже намного крепче, но и работать с ними сложнее (если нужна скорость). Зависит от задачи — для паролей лучше bcrypt/scrypt/argon2, они с солью и нагрузкой на систему, а для файлов — SHA-256 будет норм.
Когда проверять хеши? В основном, чтобы убедиться, что файл не изменился или пароль совпадает. Если у вас есть дамп хешей с базы или что-то из учебки, можно попробовать с помощью тулзов открытые словари или генераторы. Но если алгоритм крепкий — задача не из легких.
В итоге, лучше сразу понять зачем нужен хеш и чем он отличается от шифрования, а потом уже подбирать инструмент. Лично я сначала путал это, пытался "расшифровать" хеш, а потом понял, что в реале стоит думать о подборе и выборе алгоритмов, подходящих под задачу.
Кто как думает — проще учиться на MD5, чтобы понять базу, но быстро переходить на что-то современное, или сразу прыгать в bcrypt/argon2?