Алгоритм редукции для радужных таблиц SHA256

Я делаю проект по взлому sha256 с использованием радужных таблиц. Я пытаюсь атаковать 8-значные буквенно-цифровые последовательности. Я точно понимаю, как работают радужные столы и как должны формироваться и храниться цепочки. Однако я не понимаю, как получить редуцирующую функцию для формирования цепочек. Я гуглил и думал об этом сам часами безрезультатно. Итак, что такое хорошая сокращающая функция для цепочек и как она может доказать, что она охватывает все 8-значные буквенно-цифровые последовательности.

1 ответ

Решение

Есть 10^9 различных последовательностей из 8 цифр. Есть 1073741824 возможных значений для первых 30 битов хеш-значения SHA256. Поэтому одним разумным подходом было бы извлечь эти 30 битов и использовать это число по модулю 10^9 в качестве функции сокращения:

R(hash) = hash[0:30] % 10^9

Маловероятно, что это на самом деле охватывает все последовательности из 8 цифр, но на практике оно должно быть достаточно хорошим из-за предполагаемых свойств "случайности" SHA256. Существует небольшое смещение в сторону чисел <= 2^30 - 10^9, хотя из-за модуля.

Другие вопросы по тегам