Можно ли вычислить только часть хэша SHA512? (С#)

Пытаюсь решить задачу keygenme. Я обнаружил, что значение ulong хранится как string. Хэш вычисляется с использованием SHA512Managed, и только 16 байтов из 128-байтового результата имеют значение. Мне нужно найти такое значение ulong, хранящееся как string, которое дает хэш с 16 определенными байтами. Насколько я понимаю, алгоритм SHA не может быть отменен, поэтому единственно возможным решением является подход грубой силы. Существует 18 446 744 073 709 551 616 возможных значений ulong, что довольно много. Итак, вопрос: «Можно ли вычислить только 16 байт хэша, чтобы уменьшить время вычисления?». P.S. Если вы знаете другой способ решить мою задачу, пожалуйста, сообщите мне. Благодарю вас!


person metacube    schedule 13.07.2016    source источник


Ответы (1)


Нет. Алгоритм вращает значения, поэтому вы не можете пропустить какую-либо его часть при расчете.

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

person Sami Kuhmonen    schedule 13.07.2016