Frage Gibt es eine Möglichkeit zu testen, ob eine Zeichenfolge ein MD5-Hash ist?


Ich versuche, eine Textdatei einzugeben, die MD5-Hashes und Schlüsselwörter (eins pro Zeile) in einer C # -App enthält. Gibt es eine Möglichkeit zu überprüfen, ob eine Zeichenfolge ein MD5-Hash ist? Ich schaute auf MSDN und konnte nichts in der MD5-Klasse finden.


9
2017-11-11 14:17


Ursprung


Antworten:


Verwenden Sie Regex wie folgt:

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

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

19
2017-11-11 14:23



Nun, ein MD5-Hash ist wirklich nur binäre Daten - wenn Sie eine Zeichenfolge haben, dann ist es wahrscheinlich in irgendeiner Weise codiert, z. base64 oder hex. Sie können testen, ob die Zeichenfolge für die richtige Länge der Binärdatei (16 Byte) korrekt codiert ist. Das ist alles - während dort kann binäre Werte, die niemals das Ergebnis von Hashing irgendwelcher Daten sind, bezweifle ich stark, dass Sie solche Werte erkennen können. Idealerweise sollte es solche Werte natürlich nicht geben ...


9
2017-11-11 14:21



Ein MD5-Hash ist ein 128-Bit-Wert. Es wird normalerweise als a dargestellt byte[] mit einer Länge von 16 oder als a string wobei jedes Byte durch zwei hexadezimale Ziffern repräsentiert wird. Ein MD5-Hash hat keine interne Struktur oder irgendeine Art von "Signatur", mit der Sie erkennen können, ob ein 128-Bit-Wert ein MD5-Hash ist oder nicht.


5
2017-11-11 14:22



wenn es 32 Bytes lang und 0-9 a-f ist es wahrscheinlich md5, aber nicht 100%


3
2017-11-11 14:22



Als erstes sollten Sie die Datei untersuchen, um herauszufinden, wie die MD5-Hashes codiert sind, und dann eine Übereinstimmung auf der Basis erstellen.


1
2017-11-11 14:25



Ich denke, der richtige ist dieser, der auch die Hauptstädte enthält. Manchmal kommen auch Hashes in Großbuchstaben daher, warum vermisse ich das.

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

oder

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

1
2018-01-07 16:27