![]() |
|
![]() ![]() ![]() |
|
mmvds |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 22.12.2007 Репутация: 1 Всего: 6 |
Возник такой вопрос, возможно ли зная входной вектор хэша md5 получить первоначальные данные (или коллизию к ним), точнее строку.
Почти разобрался как это сделать, но появилась пара вопросов: например для хэша 79054025255fb1a26e4bc422aef54eb4, берем его уже известный (вычисленный/подобранный) входной вектор
128 байт (1024 бита) кратен 512 битам, все ок. переводим в bin
Из описания по созданию вектора:
т.е. идем с конца, сначала необходимо вычесть младшие 64 бита входного потока, тут как раз и проблемы: (1) не совсем понятно, куда добавляются в начало или в конец? Или 32 бита в начало, 32 в конец?
(2) какое из слов считается младшим? Хотя, это не так важно, главное выяснить с каго конца убирать 64 бита Затем идем к 1 шагу тут опять тот же вопрос
(3)куда дописываем нули и единичку в начало или конец? (4) Ну и наконец, когда получим входной поток, в какой последовательности располагаются ASCII номера символов строки? Это сообщение отредактировал(а) mmvds - 14.4.2008, 21:03 |
||||||||||
|
|||||||||||
mmvds |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 22.12.2007 Репутация: 1 Всего: 6 |
Дожал я его, к сожалению преобразовать в строку любой вектор не получится :(
Необходимо сразу несколько условий: 1) чтобы входной поток был строкой необходима его кратность 8 битам (байту), смотрим пример выше: а) убираем последние 64 бита, б) последний байт 10010011, убираем 1, нулей с конца больше нет, получаем входной поток размером 959 бит, не кратен 8 :( Т.е. необходимо, чтоб 120-ый байт имел вид 10000000 (0x80) Программа md5coll строит коллизии (точнее находит 2 разных входных вектора с одним хэшем) и у ее входных векторов 120-ый байт как раз 1000000, но даже это не поможет построить строку-коллизию, т.к. из-за стандарта ASCIIZ: 2) будет необходимо, чтобы 119-ый байт был нулевым (окончание строки) и третье условие: 3) до 119-ого байта не должно быть нулевых байтов, по той же причине В общем вероятность возможности преобразования входного вектора, а точнее самого входного потока в строку близка к 0. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |