Хеши: когда лучше пытаться расшифровать, а когда проще подобрать?
Часто вижу, что народ путается между понятием расшифровки хешей и их перебором. На самом деле расшифровка в классическом смысле почти невозможна — хеш это не шифр, а результат односторонней функции. Поэтому, если речь о восстановлении исходных данных, надо говорить про подбор (brute force, словари и т.п.).
Если нужен быстрый результат, то стоит ориентироваться на известные слабости конкретного алгоритма или использовать радужные таблицы (только для слабых хешей типа MD5, SHA1). Они сокращают время подбора, но и их возможности ограничены. С другой стороны, сильные современные алгоритмы (bcrypt, argon2) не поддаются ни расшифровке, ни быстрому подбору.
В целом, если задача «взломать» хеш — надежная криптография здесь выигрывает, ничего толком сделать не получится. Но если это учебная лабораторка или надо проверить устойчивость своей системы, тогда разумно сначала оценить какой алгоритм, чем защищён и как оптимизировать подбор под конкретный формат данных.
Короче, расшифровка в привычном смысле ложка дёгтя, а вот подбор — основное рабочее направление. Кто что сюда ещё добавит по практике с реальными задачами?