Алгоритм редукции для радужных таблиц 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, хотя из-за модуля.