Напомним, что хеш-функция принимает входные данные произвольной длины.Хорошая криптографическая хеш-функция, по-видимому, назначает «случайный» хеш-результат любому входу.Таким образом, если дайджест имеет длину N бит (для SHA-1, N = 160), то каждый вход будет хэширован с одним из 2 ^ N возможных результатов, что мы будем рассматривать как случайные.
Это означает, что ожидание для поиска прообраза для вашего результата хеширования выполняется через 2 ^ N входных данных.Они не должны точно соответствовать диапазону, который вы предложили - любые 2 ^ N различных входных данных подходят.
Это также означает, что 2 ^ N входных данных не гарантируют , что вы найдете прообраз - каждая попытка случайна, поэтому вы можете упустить свой шанс 1-в-2 ^ Nв каждом из этих 2 ^ N входов (точно так же, как подбрасывание монеты дважды не гарантирует, что вы получите голову хотя бы один раз).Но вы можете выяснить, сколько входных данных требуется для того, чтобы найти прообраз для хэша с вероятностью p или выше, причем p - это число, близкое к единице, как вам нужно (просто на самом деле не 1).