Member 12919448 Ответов: 3

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


Я использую следующий код для шифрования пароля:
public static string GetMD5(string input)
{
    using(MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider())
    {
        byte[] b = System.Text.Encoding.UTF8.GetBytes(input);
        b = MD5.ComputeHash(b);
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        foreach(byte x in b)

            sb.Append(x.ToString("x2"));

        return sb.ToString();
    }
}


Теперь мне нужно расшифровать его

Что я уже пробовал:

Вот код, который я использовал для расшифровки пароля, но он не сработал !


public static string decrypt(string input)
{
    try
    {
        var encoder = new System.Text.UTF8Encoding();
        System.Text.Decoder utf8Decode = encoder.GetDecoder();
        byte[] todecodeByte = Convert.FromBase64String(sData);
        int charCount = utf8Decode.GetCharCount(todecodeByte, 0, todecodeByte.Length);
        char[] decodedChar = new char[charCount];
        utf8Decode.GetChars(todecodeByte, 0, todecodeByte.Length, decodedChar, 0);
        string result = new String(decodedChar);
        return result;
    }
    catch (Exception ex)
    {
        throw new Exception("Error in base64Decode" + ex.Message);
    }
}

0x01AA

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

Читать это:Криптографическая хэш - функция- Википедия[^] а также Эта цитата:Односторонняя функция - Википедия[^]

Member 12919448

Я так не думаю, я привык https://www.md5online.org/md5-decrypt.html чтобы проверить и он дал мне простой текст пароля

0x01AA

Да и что мы там можем прочитать: "этот алгоритм необратим, обычно невозможно найти исходное слово из MD5. Наш инструмент использует огромную базу данных для того, чтобы иметь наилучшие шансы на краклинг оригинального слова.
Просто введите хэш в декодер MD5 в форме выше, чтобы попытаться расшифровать его!
Слова в базе данных: 1,154,869,575,613"

Поэтому, пожалуйста, попробуйте этот сайт с GUID и проверьте свою удачу ;)

Gerry Schmitz

Он использует "таблицу" известных хэшей для заданных "слов". Попробуйте что-нибудь "длиннее".

alexcoder99

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

3 Ответов

Рейтинг:
24

Dave Kreskowiak

Ты не можешь. MD5-это не шифрование. Это криптографический хэш. Вы не можете "расшифровать" хэш обратно к исходному содержимому.

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

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

Подумайте об этом. Возможно ли представить неограниченное число возможных строк в ограниченном, малом числе битов? Нет.


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


0x01AA

А 5 за упоминание о столкновениях.
Я совершенно нуб в этих криптографических вещах. Итак, можете ли вы объяснить мне, почему MD5 (128 бит) отсутствует, а GUID (128 бит) все еще является чем-то, на что мы можем положиться?
Заранее спасибо.

Dave Kreskowiak

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

В большинстве случаев вы даже не получаете полные 128 бит для использования, ограничивая количество возможных комбинаций! Причина этого кроется в различных форматах для версий UUID или GUID (MS). Перейдите к чтению информации о версии UUID по адресу https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address), чтобы узнать, какие данные используются для составления различных значений UUID.

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

Тааак, что это только что значило? Ну, скажем, у вас есть алгоритм хэширования, который генерирует 32-битные значения. Это дает вам 4,294 миллиарда возможных комбинаций, в основном, список возможных значений. Теперь бросьте в алгоритм строку байтов, и он выдаст вам одно из этих значений из списка, по сути, удалив его из списка. Теперь дайте ему еще одну строку байтов, и вы получите еще одно хэш-значение из списка. Продолжайте идти, и количество возможных хэш-значений продолжает уменьшаться. На самом деле никакого списка нет. Это всего лишь вероятностный анализ. Если вы хотите действительно хорошее описание того, что происходит, прочитайте это: Вероятности Столкновения Хэшей[^]

0x01AA

Большое вам спасибо за это.

Рейтинг:
2

AtulSharma609

Вы не можете расшифровать MD5
Ссылка, которую вы упомянули, расшифровывает только MD5, который вы шифруете там или кто-то другой сделал
Попробуйте эту строку

a23ee3caaeef2cf08e96dde037a74df4


Он не будет расшифровывать но как только вы зашифруете исходные данные он будет расшифровывать данные
вы можете попробовать использовать эту исходную строку данных, как показано ниже

amount=1&currency=USD&fields=id,amount,notify_status,currency,time,reference,notify_id&id=3ea3b468735b81e1ef5536d91&notify_id=D0000036689-e915dc40b72c89e4ed55&notify_status=success&reference=190404184802PTM03498&time=20190404104820&token=AC12A68A47E1D4569A98688062F9860D0


Рейтинг:
0

MadMyche

Вы не.

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

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