Есть ли способ проверить, является ли строка хешем MD5? - PullRequest
9 голосов
/ 11 ноября 2009

Я пытаюсь ввести в приложение C # текстовый файл, содержащий хэши MD5 и ключевые слова (по одному на строку). Есть ли способ проверить, является ли строка хешем MD5? Я посмотрел на MSDN и не смог найти ничего в классе MD5.

Ответы [ 6 ]

18 голосов
/ 11 ноября 2009

Используйте Regex так:

public static bool IsMD5(string input)
{
    if (String.IsNullOrEmpty(input))
    {
        return false;
    }

    return Regex.IsMatch(input, "^[0-9a-fA-F]{32}$", RegexOptions.Compiled);
}
9 голосов
/ 11 ноября 2009

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

5 голосов
/ 11 ноября 2009

Хэш MD5 является 128-битным значением. Обычно он представлен как byte[] длиной 16 или как string, где каждый байт представлен двумя шестнадцатеричными цифрами. Хеш MD5 не имеет внутренней структуры или какой-либо «сигнатуры», которая позволяет определить, является ли 128-битное значение хешем MD5.

3 голосов
/ 11 ноября 2009

, если его длина 32 байта и 0-9 a-f, вероятно, md5, но не 100%

1 голос
/ 07 января 2014

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

[0-9a-fA-F]{32}

или

[0-9a-f]{32}(?i)
1 голос
/ 11 ноября 2009

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

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