sha1() vs. md5()

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

  • sha1() vs. md5()

    Hallo,

    Würde mich mal interessieren was ihr so verwendet, und welche gründe dafür sprechen.

    Habe beides genutzt bleibe aber meist doch bei der bekannteren md5() variante.
    20
    md5()
    0%
    16
    sha1()
    0%
    4
    Webdesign und Webentwicklung - Plunix.de

  • #2
    Im Grunde ist es egal. SHA1 generiert dir nen 40bit Hash, MD5 32.

    Beide sind nicht umkehrbar.

    Du kannst natürlich sha1 verwenden, allerdings spare ich mir z.B. bei Passwörtern die 8 Zeichen und verwende lieber einen Salt...
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      nun ja es soll mittlerweile möglichkeiten md5() umzukehren, allerdings weis ich diese nicht, und weis auch nicht ob es bei sha1 geht.
      Webdesign und Webentwicklung - Plunix.de

      Kommentar


      • #4
        Original geschrieben von Lennie
        nun ja es soll mittlerweile möglichkeiten md5() umzukehren
        Nein, kann es gar nicht geben - weil bei MD5 (und SHA1 auch, eigentlich bei jedem Hash-Algorithmus) verschiedene Eingabedaten das gleiche Ergebnis geben können. Das nennt man Kollisionen.

        Die "Sicherheit" eines solchen Algorithmus hängt also massgeblich davon ab, wie "leicht" es ist, solche Kollisionen zu finden - also zu einem bestimmten Hash-Ergebnis "passende" Eingabedaten.

        Und das ist bei MD5 mit entsprechendem Aufwand inzwischen möglich, irgendwelche Chinesen haben ein Verfahren entwickelt.

        Informier dich zum Thema mal, bspw. bei der Wikipedia.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          es kann wohl sein, dass es ein algorithmus erfunden wurde, um md5 zu knacken.
          Vermutlich wurde bei autauchen von den gleichen md5-werten ein logische muster gefunden.
          aber es gibt ein riesige Datenbank mit allen buchstabenkombinationen bis einer bestimmter Größe und dazugehörige md5 wert von dieser Buchstabenkombination.
          die Tabellen stehen eigentlich teilweise im Internet zur Verfügung.
          http://www.freerainbowtables.com/ind...ables-md5.html
          sha1 ist bei solchen Tabellen genau 20% von gesamter Datenmenge sicherer als md5.
          Damit meine ich natürlich nicht ein verschlüsselter Text in 20 zeilen, sondern bis zu 8 zeichen grosse passwörter.
          Slava
          bituniverse.com

          Kommentar


          • #6
            Original geschrieben von Shurakai
            Beide sind nicht umkehrbar.
            Das ist nicht richtig.
            Ich hatte mal ein Programm mit dem man MD5 Passwörter wieder entcoden kann.
            Braucht alllerdings lange wenn das Passwort lange ist, und noch länger wenn Groß- Kleinbuchstaben oder Sonderzeichen verwendet werden.

            Hatte es mit einem nur Kleingeschriebenen 4-Zeichen Passwort probiert, da hat es gar nicht lange gedaert bis er das richtige ausgespuckt hatte.

            Kommentar


            • #7
              Original geschrieben von Andy2006
              Das ist nicht richtig.
              Ich hatte mal ein Programm mit dem man MD5 Passwörter wieder entcoden kann.
              doch, das ist richtig.
              was du meinst, ist eine simple brute force attacke, bei der einfach nacheinander alle möglichen kombinationen ausprobiert werden, bis der md5 passt. und bei 4 zeichen bestehend nur aus kleinbuchstaben ist das wirklich nicht sehr aufwändig:
              PHP-Code:
              $pass='test';
              $md5_pass=md5($pass);
              $symbols=range('a''z');

              foreach(
              $symbols as $s1)
               foreach(
              $symbols as $s2)
                foreach(
              $symbols as $s3)
                 foreach(
              $symbols as $s4)
                  if(
              md5($s1.$s2.$s3.$s4)==$md5_pass)
                   die(
              'password found: '.$s1.$s2.$s3.$s4);

              echo 
              'password NOT found!'
              aus diesem grund sollten passwörter auch hinreichend lang gewählt werden.

              Kommentar


              • #8
                Original geschrieben von Andy2006
                Das ist nicht richtig.
                Original geschrieben von 3DMax
                doch, das ist richtig.
                Genau genommen ist beides irgendwie nicht so ganz richtig.
                Man weiss nicht ob es eine umkehrfunktion gibt die leicht zu berechnen ist.
                Man weiss nicht mal ob es die einwegeigenschaft überhaupt gibt.
                Für den konkreten fall wäre es schön wenn man das beweisen könnte denn
                dann hätte man auch P ≠ NP gezeigt. Das hiesse erstens dass MD5 eine
                einwegfunktion ist und zweitens nicht in polynomzeit umgekehrt werden kann.

                Warten wir ab was die mathematiker besonders im bereich der komplexitätstheorie
                noch zu tage fördern.

                greets
                (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                Kommentar


                • #9
                  Wenn eine Eindeutigkeit vorhanden wäre und eine Umkehrfunktion existieren würde - dann bräuchten Tauschbörsennutzer endlich nicht mehr mehrere hundert MB für einen Film über die Leitung jagen. Man würde einfach den Hash austauschen, und jeder berechnet sich daraus wieder den kompletten Film - Hurra!
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Original geschrieben von wahsaga
                    Man würde einfach den Hash austauschen, und jeder berechnet sich daraus wieder den kompletten Film - Hurra!
                    Dann würden auch ISDN Nutzer zum Zuge kommen und könnten der Industrie schaden
                    Sunshine CMS
                    BannerAdManagement
                    Borlabs - because we make IT easier
                    Formulargenerator [color=red]Neu![/color]
                    Herkunftsstatistik [color=red]Neu![/color]

                    Kommentar


                    • #11
                      OffTopic:
                      - Gibt es
                      - Gar nicht
                      - Wohle


                      Ach ja: Gibts nicht. Zur Erklärung: Ob die tatsächlich in md5 umgerechnete Zeichenkette gefunden wurde, kann dir keiner sagen. Macht in dem Moment auch keinen Unterschied, wenn man es benutzt um ein Passwort auszuspähen: intern wird halt der gespeicherte md5-Schlüssel mit dem errechneten md5-Schlüssel verglichen.

                      Was anderes wäre, wenn man das Passwort in md5 und sha1 (obwohl sha1 afaik deutlich schneller kollidiert) speichert, und beide Hash-Werte mit dem eingegebenen vergleicht. Da hat Lukas "superhacker95" Schmitz aus Schweinsbach direkt mal mehr zu tun
                      [FONT="Helvetica"]twitter.com/unset[/FONT]

                      Shitstorm Podcast – Wöchentliches Auskotzen

                      Kommentar


                      • #12
                        Also mit der von den Chinesen entwickelten Methode kann man nicht MD5 umkehren, sondern in sehr kurzer Zeit Kollisionen finden. Das bedeutet, dass man einen Klartext braucht und daraus in sehr kurzer Zeit einen zweiten Klartext berechnen kann, der den selben MD5-Hashwert hat.

                        Wer Spaß dran hat, kann mal die folgenden beiden PostScript-Dateien ansehen und die MD5-Hashes vergleichen:
                        http://www.cits.rub.de/imperia/md/co...tter_of_rec.ps
                        http://www.cits.rub.de/imperia/md/co...agnus/order.ps

                        Und die Rainbow Tables enthalten nicht alle möglichen Kombinationen aus Klartext und Passwort, sondern nur relativ wenige, die aber so angeordnet sind, dass man darauf schnell suchen kann und auch die nicht enthaltenen Kombinationen findet.


                        Wer hat denn heutzutage noch kein DSL?
                        hopka.net!

                        Kommentar


                        • #13
                          Original geschrieben von Andy2006
                          Hatte es mit einem nur Kleingeschriebenen 4-Zeichen Passwort probiert, da hat es gar nicht lange gedaert bis er das richtige ausgespuckt hatte.
                          Angenommen du hast Möglichkeiten ein Wort mit 4 Buchstaben aus 100 Zeichen zusammenzubauen (egal ob sinnlos oder sinnvoll), dann hast du also 100 * 100 * 100 * 100 = 10^8 Möglichkeiten. Das ist relativ wenig und geht schnell von der Hand.


                          EDIT:
                          man hat 10^8 und nicht 10^7 Möglichkeiten... war mir garnicht aufgefallen dass ich 10^7 geschrieben hab ....
                          Zuletzt geändert von Shurakai; 20.03.2007, 10:04.
                          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                          var_dump(), print_r(), debug_backtrace und echo.
                          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                          Kommentar


                          • #14
                            hallo,

                            wo is tiger oder whirlpool?

                            gruß
                            Robert

                            Kommentar


                            • #15
                              Was?
                              Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                              var_dump(), print_r(), debug_backtrace und echo.
                              Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                              Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                              Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                              Kommentar

                              Lädt...
                              X