Можно ли расшифровать хэши MD5?

кто-то сказал мне, что он видел программными системами:

  1. извлечение MD5 зашифрованных паролей из других систем;
  2. расшифровать зашифрованные пароли и
  3. храните пароли в базе данных системы, используя собственный алгоритм системы.

Это возможно? Я думал, что невозможно / возможно расшифровать хэши MD5.

Я знаю, что есть словари MD5, но есть ли фактическая расшифровка алгоритм?

23 ответов


нет. MD5 не является шифрованием (хотя он может использоваться как часть некоторых алгоритмов шифрования), это один из способов хэш-функция. Большая часть исходных данных фактически "потеряна" как часть преобразования.

подумайте об этом: MD5 всегда имеет длину 128 бит. Это означает, что есть 2128 возможные хеши MD5. Это достаточно большое число, и все же оно определенно конечное. И все же существует бесконечное число возможных входных данных для данного хэш-функция (и большинство из них содержат более 128 бит или жалкие 16 байт). Таким образом, на самом деле существует бесконечное количество возможностей для данных, которые будут хэшироваться до одного и того же значения. Что делает хэши интересными, так это то, что невероятно сложно найти две части данных, которые хэшируются с одинаковым значением, и вероятность того, что это произойдет случайно, почти равна 0.

простой пример для (очень небезопасной) хэш-функции (и это иллюстрирует общую идею ее существования односторонним) было бы взять все биты части данных и рассматривать их как большое число. Затем выполните целочисленное деление, используя некоторое большое (возможно, простое) число n и возьмите остальное (см.:модуль). Вам останется некоторое число между 0 и n. Если вы должны были выполнить тот же расчет снова (в любое время, на любом компьютере, в любом месте), используя ту же строку, он придет с тем же значением. И все же, нет никакого способа найти из чего исходное значение было, так как существует бесконечное число чисел, которые имеют этот точный остаток, если разделить на n.

тем не менее, было обнаружено, что MD5 имеет некоторые слабые стороны, такие, что с некоторой сложной математикой можно найти столкновение, не пробуя 2128 возможных входных строк. И тот факт, что большинство паролей короткие, и люди часто используют общие значения (например, "пароль" или "секрет") означает, что в некоторых случаях, вы можете сделать достаточно хорошее предположение о чьем-то пароле, погуглив для хэша или используя Радужный таблице. Это одна из причин, почему вы всегда должны "соль " хэшированные пароли, так что два одинаковых значения при хэшировании не будут хэшироваться до одного и того же значения.

Как только часть данных была запущена через хэш-функцию, возврата нет.


вы не можете - в теории. Весь смысл гашиша в том, что это только один способ. Это означает, что если кому-то удается получить список хэшей, они все равно не могут получить ваш пароль. Кроме того, это означает, что даже если кто-то использует один и тот же пароль на нескольких сайтах (да, мы все знаем, что мы не должны, но...) у кого есть доступ к базе данных сайта, не сможет использовать пароль пользователя на сайте Б.

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

MD5-плохой хэш для использования паролей:

  • это быстро, что означает, что если у вас есть "целевой" хэш, дешево попробовать много паролей и посмотреть, сможете ли вы найти тот, который хэширует эту цель. Соление не помогает с это сценарий, но это помогает сделать его более дорогим, чтобы попытаться найти пароль, соответствующий любой одной из несколько хэшей с использованием различных солей.
  • Я считаю, что она известные недостатки, которые облегчают поиск коллизий, хотя поиск коллизий в печатаемом тексте (а не произвольных двоичных данных), по крайней мере, будет сложнее.

Я не эксперт по безопасности, поэтому не буду делать конкретную рекомендацию за пределами "не сворачивайте свою собственную систему аутентификации.- Найди его у уважаемого поставщика и используй. Как разработка и внедрение систем безопасности-это сложный бизнес.


технически, это 'возможно', а при очень жесткие условия (радужные таблицы, грубое принуждение на основе очень малой возможности того, что пароль пользователя находится в этой хэш-базе данных).

но это не значит, что это

  • жизнеспособных
    или
  • безопасное

вы не хотите 'reverse' an MD5 в хэш. используя методы, описанные ниже, вы будете и не нужно. "Реверсирование" MD5 фактически считается вредоносного - несколько веб-сайтов предлагают возможность "взломать" и bruteforce MD5 хэши-но все они являются массивными базами данных, содержащих словарные слова, ранее представленные пароли и другие слова. Есть очень маленький шанс что у него будет хэш MD5, который вам нужен. и если ты соленое хэш MD5-это тоже не сработает! :)


путь входа с MD5 хэширования должны работа:

При Регистрации:
Пользователь создает пароль - > пароль хэшируется с помощью MD5 - > хэш, хранящийся в базе данных

При Входе В Систему:
Пользователь вводит имя пользователя и пароль - > (имя пользователя проверено) пароль хэшируется с помощью MD5 - > хэш сравнивается с сохраненным хэшем в база данных

когда "потерянный пароль" необходим:

2 варианта:

  • пользователь отправил случайный пароль для входа в систему, а затем прослушивается, чтобы изменить его при первом входе в систему.

или

  • пользователю отправляется ссылка на изменение пароля (с дополнительной проверкой, если у вас есть секретный вопрос / etc) , а затем новый пароль хэшируется и заменяется старый пароль в базе данных

не напрямую. Из-за принципу Дирихле, существует (вероятно) более одного значения, которое хэширует любой заданный вывод MD5. Как таковой, вы не можете изменить его с уверенностью. Кроме того, MD5 сделан, чтобы сделать его трудно найти любой такой обратный хэш (однако были атаки, которые производят конфликты - то есть, производят два значения, которые хэшируют к тому же результату, но вы не можете контролировать, что результирующее значение MD5 будет быть.)

однако, если вы ограничите пространство поиска, например, общими паролями с длиной под N, у вас может больше не быть свойства необратимости (потому что количество выходов MD5 намного больше, чем количество строк в интересующей области). Тогда вы можете использовать Радужный таблице или аналогично обратным хэшам.


невозможно, по крайней мере, не в разумное количество времени.

кстати, это часто используется пароль "сброс". То есть вы даете им новый (случайный) пароль и отправляете их по электронной почте.


вы не можете вернуть пароль md5.(на любом языке)

но можно:

дайте пользователю новый.

регистрация в некоторых радужных таблиц может извлечь старый.


нет, он, должно быть, запутался в словарях MD5.

криптографические хэши (MD5 и т. д...) are один из способов и вы не можете вернуться к исходному сообщению и только дайджест если у вас есть другая информация об исходном сообщении и т. д. что ты не должен.


расшифровка (непосредственно получение простого текста из хэшированного значения алгоритмическим способом), нет.

существуют, однако, методы, которые используют то, что известно как Радужный таблице. Это вполне возможно, если ваши пароли хэшируются без соли.


MD5-это алгоритм хэширования, вы не можете вернуть хэш-значение.

вы должны добавить "change password feature", где пользователь дает другой пароль, вычисляет хэш и сохраняет его как новый пароль.


нет простого способа сделать это. Это своего рода точка хэширования пароля в первую очередь. :)

одна вещь, вы должны быть в состоянии сделать, это установить временный пароль для них вручную и отправить их.

Я не решаюсь упомянуть об этом, потому что это плохая идея (и это не гарантирует работу в любом случае), но вы можете попробовать найти хэш в радужной таблице, как milw0rm чтобы узнать, можете ли вы восстановить старый пароль, который путь.


см. все другие ответы здесь о том, как и почему это не обратимо и почему вы все равно не захотите.

для полноты, хотя, есть радужные таблицы который вы можете найти возможные совпадения. Нет никакой гарантии, что ответ в таблице rainbow будет оригинальным паролем, выбранным вашим пользователем, чтобы сильно запутать их.

кроме того, это не будет работать для соленых хэшей. соление рекомендуется много эксперты безопасности.


нет способа "вернуть" хэш-функцию с точки зрения нахождения для нее обратной функции. Как упоминалось ранее, в этом весь смысл наличия хэш-функции. Он не должен быть обратимым, и он должен допускать быстрый расчет хэш-значения. Поэтому единственный способ найти входную строку, которая дает заданное хэш-значение, - это попробовать все возможные комбинации. По этой причине это называется атакой грубой силы.

попытка всех возможных комбинаций занимает много времени и это также причина, по которой хэш-значения используются для хранения паролей относительно безопасным способом. Если злоумышленник может получить доступ к базе данных со всеми паролями пользователей внутри, вы теряете в любом случае. Если у вас есть хэш-значения и (идеалистически говоря) надежные пароли, будет намного сложнее получить пароли из хэш-значений для злоумышленника.

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


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

вы не можете отменить хэш MD5.


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

Это единственный способ, не вдаваясь в криптоанализ.


да, именно то, что вы просите можно. Невозможно "расшифровать" пароль MD5 без помощи, но можно повторно зашифровать пароль MD5 в другой алгоритм, просто не все за один раз.

то, что вы делаете, это организовать для ваших пользователей, чтобы иметь возможность войти в новую систему, используя старый пароль MD5. В тот момент, когда они входят в систему, они дали вашей программе входа unhashed версия пароля, который вы доказываете, соответствует хэшу MD5, который У вас есть. Затем вы можете преобразовать этот не хэшированный пароль в новый алгоритм хэширования.

очевидно, что это расширенный процесс, потому что вы должны ждать ваших пользователей, чтобы сказать вам, что пароли, но это работает.

(NB: семь лет спустя, ну, надеюсь, кто-то найдет это полезным)


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

в некоторых случаях метод словаря может быть просто бесполезным:

  • если сообщение хэшируется с помощью сообщения соли
  • если сообщение хэш более одного раза

например, вот один MD5 в декриптер онлайн-инструмент.


нет,это невозможно. Либо вы можете использовать словарь, либо вы можете попробовать хэшировать разные значения, пока не получите хэш, который вы ищете. Но его нельзя "расшифровать".


MD5 имеет свои недостатки (см. Википедия), поэтому есть некоторые проекты, которые пытаются предварительно вычислить хэши. Википедия также намекает на некоторые из этих проектов. Одно я знаю (и уважаю) это ophrack. Вы не можете сказать пользователю свой собственный пароль, но вы можете сказать им пароль, который работает. Но я думаю: просто напишите thrm новый пароль на случай, если они забыли.


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

попробуйте онлайн :

MD5 расшифровать

md5online

md5decrypter


в теории невозможно расшифровать хэш-значение но у вас есть некоторые грязные методы для получения исходного обычного текста.

  1. Bruteforcing: все алгоритмы компьютерной безопасности страдают bruteforcing. Основываясь на этой идее, сегодняшний GPU использует идею параллельного программирования, с помощью которого он может вернуть обычный текст, массово bruteforcing его с помощью любого графического процессора. Этот инструмент hashcat тут эта работа. Последний раз, когда я проверял технологии CUDA версия этого, я смог bruteforce 7 письмо длинный символ в течение шести минут.
  2. поиск в интернет: просто скопируйте и вставьте хэш в Google и посмотрите, сможете ли вы найти там соответствующий открытый текст. Это не решение, когда вы pentesting что-то, но это определенно стоит попробовать. Некоторые веб-сайты поддерживают хэш почти для всех слов в словаре.

нет, невозможно отменить хэш-функцию, такую как MD5: учитывая выходное хэш-значение, невозможно найти входное сообщение, если не известно достаточно информации о входном сообщении.

Decryption не является функцией, определенной для хэш-функции; шифрование и дешифрование являются функциями шифр такие как AES в режиме CBC; хэш-функции не шифровать, ни расшифровать. используются хэш-функции к дайджест входящее сообщение. как следует из названия, обратный алгоритм невозможен конструкция.


MD5 был разработан как криптографически безопасный,односторонняя хэш-функция. Теперь легко создавать коллизии для MD5-даже если большая часть входного сообщения заранее определена. Таким образом, MD5 официально нарушен, и MD5 больше не следует считать криптографически безопасным хэшем. Это, однако, все еще невозможно найти входное сообщение, которое приводит к хэш-значению: Найти X, когда известно только H(X) (и X не имеет предварительно вычисленной структуры с хотя бы одним 128-байтовым блоком предварительно вычисленных данных). Есть нет известных атак до изображения против его MD5.

обычно также можно угадать пароли с помощью грубой силы или (дополненных) атак словаря, сравнить базы данных или попытаться найти хэши паролей в так называемых радужных таблицах. Если совпадение найдено, то оно вычислительно уверен, что вход был найден. Хэш-функции также защищены от атак столкновения: поиск X', Так что H(X') = H(X) дано H(X). Так что если X обнаружено, что вычислительно точно, что это действительно входное сообщение. В противном случае вы бы все-таки совершили атаку на столкновение. Радужные таблицы могут использоваться для ускорения атак, и есть специализированные интернет-ресурсы, которые помогут вам найти пароль, заданный конкретным хэш.

это, конечно, можно повторно использовать значение хэша H(X) для проверки паролей, сгенерированных в других системах. Единственное, что должна сделать принимающая система, - это сохранить результат детерминированной функции F что происходит H(X) в качестве входных данных. Когда X дана система H(X) и поэтому F можно пересчитать и результаты можно сравнить. Другими словами, это не требуется для расшифровки хэш-значение просто проверка что пароль правильный, и вы все равно можете сохранить хэш как другое значение.


вместо MD5 важно использовать хэш пароля или PBKDF (пароль ключа функция деривации) вместо. Такая функция определяет, как использовать соль вместе с хэш. Таким образом, идентичные хэши не будут генерироваться для идентичных паролей (от других пользователей или в других базах данных). Пароль: хэши по этой причине также не позволяют использовать радужные таблицы, пока соль достаточно велика и правильно рандомизирована.

хэши паролей также содержать работа-фактор (иногда настраивается с помощью итераций), что может значительно замедлить атаки, которые пытаются найти пароль, учитывая значение соли и хэша. Это важно, так как база данных с солями и хэш-значениями может быть украдена. Наконец, хэш пароля также может быть памяти-жесткий таким образом, для вычисления хэша требуется значительный объем памяти. Это делает невозможным использование специального оборудования (GPU, ASIC, FPGA и т. д.) чтобы позволить злоумышленнику ускорить поиск. Другие входные данные или параметры конфигурации, такие как перец или количество распараллеливания, также могут быть доступны для хэша пароля.

это, однако, все равно позволит кому-либо проверить пароль, данный H(X) даже если H(X) - это хэш пароля. Пароль: хэши по-прежнему детерминированы, поэтому, если кто-то знает все входные данные и сам алгоритм хэша, то X может использоваться для расчета H(X) и-снова-результаты можно сравнить.

обычно используемые хэши паролей bcrypt, скрипт и PBKDF2 с. Существует также Argon2 в различных формах, который является победителем разумно недавнего конкурса хэширования паролей. здесь, на CrackStation is хороший пост в блоге о защите паролем.


можно сделать невозможным для противников выполнить вычисление хэша, чтобы убедиться, что пароль правильный. Для этого перец можно использовать в качестве ввода хэша пароля. В качестве альтернативы хэш-значение, конечно, может быть зашифровано с помощью шифра, такого как AES и режим работы, такой как CBC или GCM. Это, однако, требует хранение секретного ключа независимо и с более высоким доступом требования, чем хэш пароля.


пока невозможно ввести хэш пароля в алгоритм и вернуть пароль в виде обычного текста, потому что хэширование-это один из способов. Но то, что люди сделали, - это создать хэши и сохранить их в большой таблице, чтобы при вводе определенного хэша он проверял таблицу на пароль, который соответствует хэшу, и возвращал этот пароль вам. Пример сайта, который делает это, являетсяhttp://www.md5online.org/ . Современные пароля счетчиков системы хранения используя алгоритм соления, при вводе одного и того же пароля в поле пароля при регистрации генерируются разные хэши.


нет, вы не можете расшифровать/отменить md5, поскольку это одностороннее шифрование. но на некоторых веб-сайтах есть большой набор паролей базы данных, поэтому вы можете попробовать онлайн декодировать свою хэш-строку MD5 или SHA1. Я попробовал сайт как http://www.mycodemyway.com/encrypt-and-decrypt/md5 и его работа отлично для меня, но это полностью зависит от вашего хэша, если этот хэш хранится в этой базе данных, то вы можете получить фактическую строку.