Ankündigung

Einklappen
Keine Ankündigung bisher.

Regex: MD5 überprüfen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Regex: MD5 überprüfen

    Hi
    suche einen simplen Regex Ausdruck, um zu prüfen ob eine Zeichenkette von md5-hashes valid ist.
    MD5 checkt man meines wissens mit
    PHP-Code:
    ([0-9a-f]){32
    , kann mir da jemand ein vollständiges Regex inkl. preg_match(...) zaubern? Möchte überprüfen ob das valid ist:
    (MD5)-(MD5)-(MD5)-(MD5)

    (MD5) steht für einen MD5 hash, also insgesamt 4 aneinandergereihte Hashes mit Strich dazwischen. Sollte eigentlich nicht so kompliziert sein oder?

    Thomas


  • #2
    Woran genau scheiterts?

    [MOD: verschoben]
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      PHP-Code:
        $to_check md5("test");
        if (
      preg_match("/^[0-9a-f]{32}$/"$to_check)) echo "ok";
          else echo 
      "nich ok"
      Wo ist das Problem?
      Selbst im Rollstuhl kann man die Menschenrechte mit Füßen treten.
      Die Politik darf kein hirnfreier Raum sein.

      Kommentar


      • #4
        Hi

        ich möchte ja überprüfen ob der String in folgendem Format vorliegt:
        (MD5)-(MD5)-(MD5)-(MD5)

        also 4 Hashes mit Strich dazwischen

        Kommentar


        • #5
          Zitat von warkid Beitrag anzeigen
          ich möchte ja überprüfen ob der String in folgendem Format vorliegt:
          (MD5)-(MD5)-(MD5)-(MD5)
          Und wie sieht dein Versuch aus?

          Wenn du einen Ausdruck für den MD5-Teil schon hast - dann sollte es ja wohl nicht so schwer sein, noch den Rest hinzu zu basteln.

          Kommentar


          • #6
            geht das so?
            PHP-Code:
            if (preg_match("/^([0-9a-f]{32})-([0-9a-f]{32})-([0-9a-f]{32})-([0-9a-f]{32})$/"$str)) echo "ok!"

            Kommentar


            • #7
              Wieso probierst du es nicht aus?

              Kommentar


              • #8
                für HEX-code gibt es außerdem eine eigene Zeichenklasse: [digit:]

                Kommentar


                • #9
                  PHP-Code:
                  function checkMD5($string$count 1$separator '-')
                  {
                      
                  $md5s explode($separator$string);
                      
                      if(
                  count($md5s) != $count) {
                          return 
                  false;
                      }
                      else {
                          foreach(
                  $md5s as $md5) {
                              if(
                  strlen($md5) !== 32 && !ctype_xdigit($md5)) {
                                  return 
                  false;
                              }
                          }
                      }
                      
                      return 
                  true;

                  Kommentar


                  • #10
                    @soul-mole:

                    In der Zeile
                    PHP-Code:
                    if(strlen($md5) !== 32 && !ctype_xdigit($md5)) return false
                    muss aber ein "oder" || hin:

                    PHP-Code:
                    if(strlen($md5) !== 32 || !ctype_xdigit($md5)) return false

                    Kommentar


                    • #11
                      Korrekt!

                      Ich hatte es nur so runter getippt und nicht weiter getestet...

                      Der Vollständigkeit halber noch der passende Ausdruck, wenn auch weniger flexibel als die Funktion:
                      Code:
                      ^(?:[A-Fa-f0-9]{32}-){3}[A-Fa-f0-9]{32}$

                      Kommentar

                      Lädt...
                      X