Есть ли способ проверить, является ли строка хэшем 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 или нет.
Первое, что нужно сделать, это изучить файл, чтобы выяснить, как хэши MD5 кодируются, а затем разработать соответствие на основе этого.
Я думаю, что правильный - это тот, который включает в себя также столицы, иногда хэши приходят также в столицах, так почему пропустить это.
[0-9a-fA-F]{32}
или
[0-9a-f]{32}(?i)