Regex zum Abgleichen von md5-Hashes

Lesezeit: 3 Minuten

Welche Art von Regex sollte verwendet werden, um einen md5-Hash abzugleichen.

wie man diese Art von Zeichenfolge validiert 00236a2ae558018ed13b5222ef1bd987

Ich habe so etwas versucht: ('/^[a-z0-9]/') aber es hat nicht funktioniert.

wie erreicht man das? Danke

  • Wenn Sie eine Zeichenfolge erhalten und diese als md5 validieren möchten, überprüfen Sie einfach die Länge 32 und die Zeichen a-f0-9.

    – David Chen

    2. Februar 2014 um 22:30 Uhr

  • Meinen Sie mit “validieren” einfach, dass jede 32-stellige Zeichenfolge, die nur gültige Hexadezimalziffern enthält, durchgelassen wird?

    – Chris

    2. Februar 2014 um 22:31 Uhr

  • Zum Beispiel mit [[:xdigit:]] und eine Wiederholung von {32} eingeschlossen in Start- und Endmarkierungen.

    – mario

    2. Februar 2014 um 22:31 Uhr


  • Die f Brief war das Problem. Danke

    – mwweb

    2. Februar 2014 um 22:33 Uhr

  • Die Einfachheit der Frage – Die erstes Suchergebnis bei Google zufällig ein Duplikat auf genau dieser Seite … als allgemeine Faustregel gilt: Wenn Sie sofort eine Antwort erhalten, haben Sie sich wahrscheinlich nicht genug Mühe mit der Frage gegeben.

    – Abgesandter

    2. Februar 2014 um 22:42 Uhr

Ryans Benutzeravatar
Ryan

Dies ist ein PCRE, das mit einem MD5-Hash übereinstimmt:

define('R_MD5_MATCH', '/^[a-f0-9]{32}$/i');

if(preg_match(R_MD5_MATCH, $input_string)) {
    echo "It matches.";
} else {
    echo "It does not match.";
}

  • Hüten Sie sich vor Hashes mit Großbuchstaben. Sowohl Groß- als auch Kleinschreibung sind gültig, daher ist es nicht richtig, die eine oder andere zu eliminieren. Die Regex sollte wahrscheinlich so aussehen: '/^[a-fA-F0-9]{32}$/i'. Beifall.

    – el.nicko

    12. Juni 2016 um 10:40 Uhr


  • @el.nicko Ich versuche zu verstehen … da die Regex enthält i Warum beide angeben, wenn die Groß-/Kleinschreibung nicht beachtet wird? a-f Und A-F? Haben Sie irgendwelche Links zum Sichern/Erweitern Ihres Standpunkts?

    – mOrloff

    13. September 2016 um 0:21 Uhr


  • @el.nicko das wäre egal, weil es das hat i Modifikator. Der Grund, warum nur der Kleinbuchstabenbereich vorhanden ist und nicht beides, liegt an der i Modifikator.

    – Ryan

    13. September 2016 um 1:54 Uhr


  • ACK, da hast du recht. Im Zusammenhang mit der Frage und der gegebenen Antwort haben Sie 100% Recht. Es gibt jedoch einige Setups (z. B. Java), bei denen die i funktioniert nicht oder zumindest nicht wie erwartet, aber das Hinzufügen der Groß- und Kleinschreibung funktioniert und verbessert die Lesbarkeit, je nachdem, wie man es sieht 🙂

    – el.nicko

    14. September 2016 um 18:59 Uhr


  • Das sind PCREs. Wie Java das macht, ist nicht relevant. Reguläre Ausdrücke sind nicht immer über Engines hinweg portierbar.

    – Ryan

    14. September 2016 um 19:26 Uhr

Versuchen ctype_xdigit:

<?php

$hash="00236a2ae558018ed13b5222ef1bd987";

var_dump(strlen($hash) === 32 && ctype_xdigit($hash));

Ausgang: bool(true)

  • Ich bevorzuge diese auf preg_match.

    – endo64

    19. April 2018 um 13:51 Uhr

  • Es ist tatsächlich auch schneller als Regex. Es könnte auch in eine Funktion eingefügt werden (z. B. isHash(string $hash, int $length = 32), für einen geringen Mehraufwand für Funktionsaufrufe. Selbst auf diese Weise ist es wahrscheinlich immer noch schneller als Regex. Bemerkenswert: Es passt zu jedem 32- char hexadezimaler String Es gibt keine Möglichkeit, md5 explizit zu validieren.

    – xNull

    11. Mai 2018 um 0:01 Uhr


1444820cookie-checkRegex zum Abgleichen von md5-Hashes

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy