Можно ли сломать хеш md5 с помощью генетических алгоритмов?
Зная, как работает md5, можно ли будет использовать алгоритм на основе совокупности, такой как генетическое программирование, для взлома простых паролей?
Например, учитывая хэш md5 для строки длиной от 5 до 10 символов, мы должны попытаться вернуть строку обратно.
Если да, что может быть
- Хорошее представление для отдельного населения
- Критерии выбора
- Методы рекомбинации
Это чтобы понять применение генетических алгоритмов и узнать, делал ли кто-нибудь что-либо в этом роде.
4 ответа
На самом деле, нет.
Всего лишь с 5 символами вы можете грубо форсировать его за не слишком разумное время, но, вероятно, вы спрашиваете больше о GA, чем о ломке MD5. Проблема в том, что в хеше MD5 нет эксплуатируемой структуры. Строки, которые "близки друг к другу", не генерируют хэши, которые "близки друг к другу" при любых полезных отношениях расстояния. Фитнес-функция будет в основном случайной.
Нет, это крайне маловероятно.
Генетический алгоритм используется, например. для нахождения локального / глобального максимума / минимума некоторой функции. В случае хеша md5, если вы измените значение, для которого вычисляете хеш md5, хеш md5 полностью изменится, поэтому сужение диапазона входных значений будет совершенно бесполезным. Алгоритм MD5 был разработан для хеширования сгенерированного значения, если входные данные изменяются каким-либо образом. Единственная возможность найти правильное значение - это когда вы применяете мутацию, но это приводит к проверке случайных входных значений на предмет того, генерируют ли они данный хэш (который, как сказал оксилумин, является просто атакой методом грубой силы).
Вы можете прочитать больше о поиске значения, которое сгенерировало определенный хэш md5 здесь (радужные таблицы).
Я думаю, что ответ "нет". Потому что вы не можете получить любую функцию кроссовера. И фитнес-функция будет булевой. GA с единственным оператором мутации и такой функцией пригодности - грубая сила.
Хотя ответ, вероятно, "нет", есть один нюанс, который следует учесть: опубликованные коллизии - это строки, которые отличаются только несколькими ключевыми байтами: https://en.wikipedia.org/wiki/MD5
Догадывание открытого текста с помощью генетического алгоритма не гарантируется, но может быть более эффективным обнаружить столкновение таким образом.
Или, если это в PHP и сравнивает хэш md5 с ==
оператор... https://eval.in/108854