Есть ли способ проверить, является ли строка хэшем MD5?

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

6 ответов


используйте регулярное выражение следующим образом:

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

    return Regex.IsMatch(input, "^[0-9a-fA-F]{32}$", RegexOptions.Compiled);
}

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


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


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


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


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

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

или

[0-9a-f]{32}(?i)