Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > md5 |
Автор: mmvds 14.4.2008, 20:56 | ||||||||||
Возник такой вопрос, возможно ли зная входной вектор хэша md5 получить первоначальные данные (или коллизию к ним), точнее строку. Почти разобрался как это сделать, но появилась пара вопросов: например для хэша 79054025255fb1a26e4bc422aef54eb4, берем его уже известный (вычисленный/подобранный) входной вектор
128 байт (1024 бита) кратен 512 битам, все ок. переводим в bin
Из описания по созданию вектора:
т.е. идем с конца, сначала необходимо вычесть младшие 64 бита входного потока, тут как раз и проблемы: (1) не совсем понятно, куда добавляются в начало или в конец? Или 32 бита в начало, 32 в конец?
(2) какое из слов считается младшим? Хотя, это не так важно, главное выяснить с каго конца убирать 64 бита Затем идем к 1 шагу тут опять тот же вопрос
(3)куда дописываем нули и единичку в начало или конец? (4) Ну и наконец, когда получим входной поток, в какой последовательности располагаются ASCII номера символов строки? |
Автор: mmvds 16.4.2008, 08:37 |
Дожал я его, к сожалению преобразовать в строку любой вектор не получится :( Необходимо сразу несколько условий: 1) чтобы входной поток был строкой необходима его кратность 8 битам (байту), смотрим пример выше: а) убираем последние 64 бита, б) последний байт 10010011, убираем 1, нулей с конца больше нет, получаем входной поток размером 959 бит, не кратен 8 :( Т.е. необходимо, чтоб 120-ый байт имел вид 10000000 (0x80) Программа md5coll строит коллизии (точнее находит 2 разных входных вектора с одним хэшем) и у ее входных векторов 120-ый байт как раз 1000000, но даже это не поможет построить строку-коллизию, т.к. из-за стандарта ASCIIZ: 2) будет необходимо, чтобы 119-ый байт был нулевым (окончание строки) и третье условие: 3) до 119-ого байта не должно быть нулевых байтов, по той же причине В общем вероятность возможности преобразования входного вектора, а точнее самого входного потока в строку близка к 0. |