Страницы

Поиск по вопросам

среда, 18 декабря 2019 г.

Вернуть md5 к исходному значению на С

#cpp #c


Подскажите какой-нибудь декриптор или что-нибудь в этом роде на Си для md5.
Нужно сделать так, чтобы шифровка md5 превращалась в то, что было до шифрования.
Возможно ли такое в принципе, и если нет, то почему?
    


Ответы

Ответ 1



MD5 - это не "шифрование", это хэш-функция. Основное требование к криптографическим хэш-функциям - необратимость. Если бы хэши были обратимы, то архиваторы и прочие алгоритмы сжатия стали бы не нужны. Например, я посчитал хэш от терабайтного файла. Получил 79a2520f22b9e1526ff93176029603b8. Вы считаете что можно эту строчку расшифровать обратно в тот же терабайт информации? Максимум, что можно сделать для MD5 - найти коллизию (второй прообраз) - строчку, для которой MD5 выдаст такое же значение. Это можно сделать или по готовым словарям (если есть подозрение что строчка - это пароль вида 12345), или с использованием радужных таблиц. Но никакой гарантии что вы получите при этом именно оригинальную строку нет. Точнее, вы с некоторой вероятностью получите оригинальную строку, если она была короткой. Но вы точно получите неоригинальную строку, а просто коллизию, если оригинал был достаточно длинным. Если поиска коллизии для вас достаточно - поищите готовую опен-сорс реализацию работы с радужными таблицами, например MD5Rainbow.

Ответ 2



Обратное действие в md5 не возможно. Получить оригинал можно только методом перебора, то есть брутом или по словарю. Перебирать варианты, md5 хеш каждого нужно сравнить с имеющимся хешом md5. Тот который будет равен вашему хешу, возможно будет ваш оригинал! (возможно! но не факт!). А на сайтах про которые вы говорите имеются словари с готовым оригиналом и готовым мд5, они просто проверяют есть ли в их словарях такие хеши, и смотрят к ним записанные ранее оригиналы строк. Но опять таки тоже не факт что это ваш хэш.

Комментариев нет:

Отправить комментарий