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



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

453   6  

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)

Comments

    Ничего не найдено.