2015-11-28 1 views
0

Возможно ли, чтобы хэши sha1 заканчивались нулевыми байтами?Возможно ли, чтобы выход SHA-1 заканчивался нулевыми байтами?

Python код

hash = haslib.sha1(); 
hash.update(STRING THAT RESULTS IN ZERO BYTES); 
if hash.digest().endswith('\x00\x00\x00'): 
.... 
+0

Это свойство предназначено для SHA-256, фактически используемого для разработки биткойнов (хотя я думаю, что хэши BC протестированы, чтобы начать с нулевых битов, но так как бит равен как минимум 0, что не имеет большого значения). –

ответ

1

Да, так как хэш-функция выходы должны быть равномерно распределены у вас есть ненулевой шанс получить любой поддерживаемый выход. Возможность увидеть последние 24 бита (3 байта) в качестве нуля равна 1.0/(2**24) или 5.9 * 10-8. В среднем вам придется попробовать 2 случайные строки, чтобы найти тот, у кого есть этот объект. Поскольку хеширование довольно быстро, это не должно занимать больше двух минут (хотя Python может быть немного медленным вообще).

+0

Спасибо! Единственная возможность найти соответствующий хеш - это грубое принуждение .. не правда ли? – themz

+0

Да, точно. Вам придется переборщить свой путь к этому результату. –

+1

Запуск простого (32-битного) счетчика и хэширования, которого должно быть достаточно, чтобы найти такой хэш. Опять же, это то, что делает БК. –