как узнать количество возможностей хэша - PullRequest
2 голосов
/ 28 апреля 2011

если у меня есть хеш, скажем так: 0d47aeda9d97686ab3da96bae2c93d078a5ab253

как мне сделать математику, чтобы узнать количество попыток, если я начну с 000000000000000000000000000000000000000000 до 9999999999999999999;

Ответы [ 5 ]

4 голосов
/ 28 апреля 2011

Количество возможностей будет 2^(X), где X - количество битов в хэше.В обычном шестнадцатеричном строковом представлении значения хеша, подобного тому, которое вы дали, каждый символ равен 4 битам, поэтому это будет 2^(4*len), где len - длина строки значения хеша.В вашем примере у вас есть 40-символьный дайджест SHA1, который соответствует 160 битам, или 2 ^ 160 == 1.4615016373309029182036848327163e + 48 значений.

1 голос
/ 28 апреля 2011

Хэш SHA-1 равен 160 битам, поэтому существует 2 ^ 160 возможных хэшей.

0 голосов
/ 28 апреля 2011

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

Это означает, что ожидание для поиска прообраза для вашего результата хеширования выполняется через 2 ^ N входных данных.Они не должны точно соответствовать диапазону, который вы предложили - любые 2 ^ N различных входных данных подходят.

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

0 голосов
/ 28 апреля 2011

максимальные вариации с повторением и с вниманием к порядку определяются как n ^ k.в вашем случае это будет означать 10 ^ 40, что не может быть правильным для SHA1.Чтение Википедии говорит, что SHA1 имеет макс.сложность для атаки, основанной на столкновениях 2 ^ 80, с использованием различных технических приемов уже были успешны с 2 ^ 51 столкновениями, поэтому 10 ^ 40 кажется немного большим.

0 голосов
/ 28 апреля 2011

Ваш диапазон шестнадцатеричных цифр от 0 до f.

Тогда это просто 16 ^ 40 или сколько символов содержит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...