2013-04-18 2 views
1

Я просто думал о числах, повторяющихся в хэшах, и мне было интересно, возможно ли, чтобы половина хэша sha512 состояла из 64 последовательных нулей.Возможно ли, чтобы хэш sha512 начинался с 64 нулей?

+2

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

+0

Ха-ха, я знаю, это потребует много вычислительной мощности, я уверен. – Max00355

+1

Это мягко сказано. Фактически, используя каждый компьютер на Земле, шансы найти его до того, как мы все умрем, являются незначительными. –

ответ

1

Это не менее вероятно, как и любое другое значение хэша, или должно быть.

+0

Очень интересно, интересно, какая строка будет равна этому хешу. – Max00355

2

Как сказал Крис - у вас должен быть такой же шанс получить такой хэш, как и любой другой хэш. Таким образом, вероятность этого равна 1/2^64.

Если вы хотите найти такой хэш, вы можете надеяться, что его уже нашли и положили в rainbow tables. Я попытался найти такой хеш here, но не смог :)

Также вы можете попробовать его самостоятельно. Я попытался с такой наивной сценарий:

import random 
import string 
import hashlib 
import datetime 
s=string.lowercase+string.digits 
random.seed(datetime.datetime.utcnow()) 

while 1: 
    x = ''.join([random.choice(s) for a in range(random.randint(2,1024))]) 
    if hashlib.sha512(x).hexdigest().startswith('0000000000000000'): 
     print x 
     exit() 

Но потом мне пришло в голову, что я до сих пор мало шансов. Итак, ожидаемое число итераций алгоритма должно составлять 2^64. Моя машина произвела 100000 итераций в

real 1m7.762s 
user 1m5.908s 
sys  0m0.123s 

Для итераций это 0.0006776 секунд.

Подводя итог - потребовалось бы около 396357000 лет, чтобы получить результат на моей машине без оптимизации.

Ну, удачи!

+0

Примечание для записи, что sha512 - 64 байта, что составляет 512 бит, поэтому существует 2 ** 512 возможных значений sha512. –

Смежные вопросы