Программа для поиска хэш коллизий алгоритма Md5

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Utochka, 7 May 2006.

  1. Utochka

    Utochka Elder - Старейшина

    Joined:
    21 Dec 2005
    Messages:
    495
    Likes Received:
    106
    Reputations:
    54
    Программа для поиска хэш-коллизий алгоритма MD5.
    Напомню, что данный алгоритм является наиболее популярным на данный момент.

    Использовать программу надо следующим образом:
    Берется хэш md5, разбивается на 4 части, и передается в качестве аргументов программе:

    ./md5coll b136ee6c 797c1a85 1260b9c1 ab5ff414
    Исходник
    http://www.securityinfo.ru/www/upload/tools/md5coll.c
    Архив
    http://www.securityinfo.ru/www/upload/tools/md5coll.zip

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

    Источник: www.securityinfo.ru
     
  2. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
    http://forum.antichat.ru/thread18044.html

    Если б всё так просто....
    В том то и дело, что получаем 256 символьный хэш, который ВСЕ РАВНО не прокатывает, даже если пасс позволяет ввести 256-символьное слово. Пока ответа нет и чёт его совсем не видно.

    Кто догадаеться как - медаль на шею+МОА =]

    Зы: прежде чем запостить - проверьте поиском на наличие подобных тем и попробуйте сами то, что предлагаете другим.
     
  3. mmvds

    mmvds Member

    Joined:
    28 Apr 2008
    Messages:
    5
    Likes Received:
    9
    Reputations:
    0
    На самом деле md5coll для выходного вектора md5 (хэша) выдает два 128 байтных (1024 битных) входных вектора, у которых хэш одинаков.

    Получить из входного вектора строку практически не реально, нужно чтобы соблюдались следующие условия:
    1) чтобы входной поток был строкой необходима его кратность 8 битам (байту)
    2) 120-ый байт имел вид 10000000 (0x80)
    3) 119-ый байт был нулевым (0х00)
    4) до 119-ого байта не должно быть нулевых байтов

    Если кого интересует, подробнее писал на форуме программистов _http://forum.vingrad.ru/forum/topic-206366.html

    Хотя есть у меня одна идея...
     
  4. DezMond™

    DezMond™ Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    3,619
    Likes Received:
    432
    Reputations:
    234
    Судя по всему, коллизи md5 Один больной ФЕЙК!
    Сколько не гуглил, так и не смог найти не программы не хотябы примера двух строк...
    Коллизия мд5 возможно только с файлами, когда когда размер отличается на пару байт, а хешь сумма одинаковая. Вот и вся суть...
    Если я не прав! прошу подкрепить своим слова примером либо рабочей прогой! Все эти статьи "научные" о коллизия блеф.... на практике не одного примера так и не кто не предоставил!
    PS пол дня убил на поиск инфы, запуском "программ" для поиска коллизий, которые только мусолят глаза бегающими циферками...
     
  5. usasoft

    usasoft Member

    Joined:
    29 Sep 2007
    Messages:
    102
    Likes Received:
    22
    Reputations:
    6
  6. DezMond™

    DezMond™ Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    3,619
    Likes Received:
    432
    Reputations:
    234
    приведи пример двух мд5 строк, не можешь? то что ты скидываешь это теория - на практике не одного примера!
     
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Если ты ищешь пример типа md5(a-Z0-9) == md5(a-Z0-9) то такой пример вряд ли найдется. Пример идентичных md5 от разных бинарных данных небольшого размера (которые, естественно, никто не мешает записать в base64 или там hex или еще как) найти можно.
     
    _________________________
  8. DezMond™

    DezMond™ Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    3,619
    Likes Received:
    432
    Reputations:
    234
    Вы имеете ввиду md5(a-Z0-9) == md5(последовательность_произвольных_байтов) - но не файл? а строка, так?
    Интересно посмотреть пример, сколько искал ни где нет. Единственное что реально существует, сам видел и могу привести пример, так это разный размер двух бинарников с одинаковыми мд5 хеш суммами....
     
  9. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Я имею в виду, что содержимое файла можно в строку записать, это никто не мешает сделать. И задаю вопрос, что является примером, который никак не находится, одинаковый хэш от двух разных строк, где в строке встречаются только буквы английского алфавита и цифры, и хэш сумма вычисляется непосредственно от них без дополнительных преобразований строки? Если да, то такое вряд ли найдется.
     
    _________________________
  10. DezMond™

    DezMond™ Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    3,619
    Likes Received:
    432
    Reputations:
    234
    Да но буквы не только английского алфавита, а и иных.
    = мд5('123456')
    Возможно?
     
  11. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Но только буквы? Непечатаемые символы нельзя?
    Получить нечто, чей мд5 будет как у мд5 от 123456 ? Ну, думаю можно сгенерировать, только вероятно понадобится неделька работы производительных систем + на выходе будет нечто вроде \xFE\x90\x75... короче 100+ символов, большинство из которых будут непечатаемыми
     
    _________________________
  12. DezMond™

    DezMond™ Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    3,619
    Likes Received:
    432
    Reputations:
    234
    Ну это только теория, а на практике к сожалению не одного примера нет(
    Вся сущность данного метода: ДМБ. Видишь суслика? а он есть)
     
  13. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Пример для примера как раз таки есть:

    http://codepad.org/mnXg3Vrq
    Code:
    <?php
    
    $str1 = "%D11%DD%02%C5%E6%EE%C4i%3D%9A%06%98%AF%F9%5C%2F%CA%B5%87%12F~%AB%40%04X%3E%B8%FB%7F%89U%AD4%06%09%F4%B3%02%83%E4%88%83%25qAZ%08Q%25%E8%F7%CD%C9%9F%D9%1D%BD%F2%807%3C%5B%D8%82%3E1V4%8F%5B%AEm%AC%D46%C9%19%C6%DDS%E2%B4%87%DA%03%FD%029c%06%D2H%CD%A0%E9%9F3B%0FW~%E8%CET%B6p%80%A8%0D%1E%C6%98%21%BC%B6%A8%83%93%96%F9e%2Bo%F7%2Ap";
    $str2 = "%D11%DD%02%C5%E6%EE%C4i%3D%9A%06%98%AF%F9%5C%2F%CA%B5%07%12F~%AB%40%04X%3E%B8%FB%7F%89U%AD4%06%09%F4%B3%02%83%E4%88%83%25%F1AZ%08Q%25%E8%F7%CD%C9%9F%D9%1D%BDr%807%3C%5B%D8%82%3E1V4%8F%5B%AEm%AC%D46%C9%19%C6%DDS%E24%87%DA%03%FD%029c%06%D2H%CD%A0%E9%9F3B%0FW~%E8%CET%B6p%80%28%0D%1E%C6%98%21%BC%B6%A8%83%93%96%F9e%ABo%F7%2Ap";
    
    $str1 = urldecode($str1);
    $str2 = urldecode($str2);
    
    echo md5($str1) . "<br />" . md5($str2);
    
     
    _________________________
  14. DezMond™

    DezMond™ Elder - Старейшина

    Joined:
    10 Jan 2008
    Messages:
    3,619
    Likes Received:
    432
    Reputations:
    234
    Ну вот это уже хоть что-то...
    Ну определённого софта наверно ещё не существует? именно для поиска коллизий
     
Loading...
Similar Threads - Программа поиска коллизий
  1. Peja
    Replies:
    0
    Views:
    2,488