собственно, не понимаю - почему нельзя выполнить обратное преобразование - из md5 хеша найти любой соответствующий ему исходный буфер? в чём принципиальная проблема, ведь если есть возможность выполнять прямое преобразование, должна же быть возможность обратного? понятно, что обратное преобразование будет неоднозначным, но ведь в большинстве случаев это не важно...
Гм. Поясните, plz, что это за случаи. И посмотрите "HASH COLLISION Q&A": h**p://w*w.cryptography.com/cnews/hash.html
Преобразование обычно обратимо относительно какого-либо параметра, если он участвует в нем однократно. В этом случае действительно, даже если само действие обратимо неоднозначно (например "AND" или "OR") можно взять любое входное значение, которое привело бы к такому же результату. Как я понимаю, в этом и суть вопроса. Но в криптостойких хеш-алгоритмах входной текст всегда используется многократно. Например, из формулы y=(x XOR t)+t напрямую выразить "t" через "x" и "y" нельзя, хотя конечно для этого конкретного случая можно зная пару (x,y) подобрать t полным перебором либо вычислить побитно другими хитростями. Этот пример конечно утрирован. На самом деле в криптоалгоритмах и количество "переиспользований" текста "t" гораздо больше, и размерность его не позволяет осуществлять полный перебор, и характер используемых действий гораздо более стоек ко всяким попыткам обращения формулы относительно параметра "t".
спасибо за ответ. я мельком глянул алгоритм вычисления хеша, поэтому и возник такой вопрос. что касается теории - её то я как раз и не мог найти - только готовые алгоритмы, да краткое описание. а почему именно берём такие матрицы, почему производим именно такие действия - я так и не понял.