Ankündigung

Einklappen
Keine Ankündigung bisher.

2 unsterschiedliche Werte von password_hash????

Einklappen

Neue Werbung 2019

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

  • 2 unsterschiedliche Werte von password_hash????

    Wollte die Funktionen password_hash eigentlich dafür einsetzen das Password - Feld in meiner User - Tabelle zu verschlüsseln. Allerdings

    PHP-Code:
    class UserTest extends TestCase {
         
    /**
          * test crypt
          */
         
    public function testPasswordHash() {
                
    $word       'secret';
                
    $password1  password_hash($wordPASSWORD_DEFAULT);
                
    $password2  password_hash($wordPASSWORD_DEFAULT);
                
                
    $this->assertTrue$password1 == $password2'password1 (' $password1 ') <> password2 (' $password2 ')');
         }

    liefert bei mir

    Code:
    password1 ($2y$10$rpdnbJu9doLWvlFz5prQ9OdbeO7GJpO.pWfTSb1/X3Yq7.mM/U.be) <> password2 ($2y$10$yeLargGCzfTOcrzptOiKSebXt5VRws7lARohgrLKp64jaQZm6v62q)
    Failed asserting that false is true.
    
    D:\programms\xampp\htdocs\Testing\tests\app\Entities\UserTest.php:31
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.
    Hat jemand dafür eine Erklärung????

  • #2
    password_hash() wird im Normalfall niemals einen Wert zweimal generieren.

    Für die Verifizierung gibts password_verify().

    Kommentar


    • #3
      Zitat von hellbringer Beitrag anzeigen
      password_hash() wird im Normalfall niemals einen Werte zweimal generieren.

      Für die Verifizierung gibts password_verify().

      ??? Bei dem gleichen Passwort hoffe ich doch stark, dass auch immer der gleiche Hash bei rauskommt. Sonst wirds aber spannend ....
      Pre-Coffee-Posts sind mit Vorsicht zu geniessen!

      Kommentar


      • #4
        Bei Password Hash? Nein, weil das Salt ist unterschiedlich. Bei Password Verify? Hoffentlich, ja.
        [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

        Kommentar


        • #5
          Zitat von Thallius Beitrag anzeigen
          Bei dem gleichen Passwort hoffe ich doch stark, dass auch immer der gleiche Hash bei rauskommt
          Nein, zum Glück nicht.

          Kommentar


          • #6
            Zitat von Thallius Beitrag anzeigen


            ??? Bei dem gleichen Passwort hoffe ich doch stark, dass auch immer der gleiche Hash bei rauskommt. Sonst wirds aber spannend ....
            http://stackoverflow.com/questions/4...ion-algorithms

            Kommentar


            • #7
              Zitat von ChristianK Beitrag anzeigen
              Bei Password Hash? Nein, weil das Salt ist unterschiedlich. Bei Password Verify? Hoffentlich, ja.
              Und wofür kann man diese Funktion dann einsetzen? Wenn ich jedesmal einen anderen Hash bekomme, da die Funktion anscheinend jedesmal einen neuen Salt benutzt, was mache ich dann mit diesem Hash außer ihn mir auszudrucken und als Bild an die Wand zu hängen?

              Gruß

              Claus
              Pre-Coffee-Posts sind mit Vorsicht zu geniessen!

              Kommentar


              • #8
                Zitat von Thallius Beitrag anzeigen
                Und wofür kann man diese Funktion dann einsetzen? Wenn ich jedesmal einen anderen Hash bekomme, da die Funktion anscheinend jedesmal einen neuen Salt benutzt, was mache ich dann mit diesem Hash außer ihn mir auszudrucken und als Bild an die Wand zu hängen?
                Verifizieren.

                http://php.net/manual/en/function.password-verify.php

                Kommentar


                • #9
                  und sich darüber freuen dass der Angreifer für jedes einzelne PW eine neue Rainbowtable generieren muss.
                  [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

                  Kommentar


                  • #10
                    Zitat von Thallius Beitrag anzeigen
                    Und wofür kann man diese Funktion dann einsetzen? Wenn ich jedesmal einen anderen Hash bekomme, da die Funktion anscheinend jedesmal einen neuen Salt benutzt, was mache ich dann mit diesem Hash außer ihn mir auszudrucken und als Bild an die Wand zu hängen?
                    Die grobe Funktionsweise wird klar, wenn man verstanden hat, dass password_hash nicht einfach nur einen Hash zurückliefert, sondern dort weitere Informationen enthalten sind (Algo, Salt, Cost, etc.)
                    [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                    Kommentar


                    • #11
                      Erstmal danke für eure vielen Informationen. Ich bin jetzt kein Kryptologe aber für mich stellt sich da doch eine Frage.

                      Wenn password_hash immer 2 unterschiedliche Werte zurück gibt, bei zwei unterschiedlichen zeitlichen aufrufen. Wird es dann nicht auch eine identische Wortkombination geben die darauf passt?
                      Alternativ wenn innerhalb der Verschlüssellung irgendwie die Zeit der Verschlüsselung herausgelesen werden kann, wird es dann nicht eher unsicher?

                      Kommentar


                      • #12
                        Zitat von Abo Beitrag anzeigen
                        Wenn password_hash immer 2 unterschiedliche Werte zurück gibt, bei zwei unterschiedlichen zeitlichen aufrufen. Wird es dann nicht auch eine identische Wortkombination geben die darauf passt?
                        Die Möglichkeit besteht bei einem Hash immer.

                        Zitat von Abo Beitrag anzeigen
                        Alternativ wenn innerhalb der Verschlüssellung irgendwie die Zeit der Verschlüsselung herausgelesen werden kann, wird es dann nicht eher unsicher?
                        Ein Hash ist keine Verschlüsselung. Einen verschlüsselten Wert kann man entschlüsseln, einen Hash-Wert nicht. Und es steht auch keine Zeitinformation drin.

                        Kommentar


                        • #13
                          Also wenn ich dich jetzt richtig verstehe ist password_hash für meine angedachte Aufgabe (s.o.) nicht geeignet?

                          Kommentar


                          • #14
                            Wenn du innerhalb deiner Anwendung mit Kennwörtern arbeitest, dann sind password_hash und password_verify genau die Funktionen die du suchst. Jage deine Kennwörter durch password_hash bevor du sie in der Datenbank speicherst und verifiziere sie (bspw. beim Login) mit password_verify.

                            PHP-Code:
                            // ..
                            $password 'mysecret..';

                            $user = new User;
                            $user->password password_hash($passwordPASSWORD_DEFAULT);
                            $user->save(); 
                            PHP-Code:
                            public function login($email$password){
                                
                            $user $this->users->findByEmail($email);
                                if(
                            password_verify($password$user->password)){
                                    
                            // password correct..
                                
                            } else{
                                    
                            // password incorrect..
                                
                            }

                            [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                            Kommentar


                            • #15
                              Zitat von lottikarotti Beitrag anzeigen
                              Wenn du innerhalb deiner Anwendung mit Kennwörtern arbeitest, dann sind password_hash und password_verify genau die Funktionen die du suchst. Jage deine Kennwörter durch password_hash bevor du sie in der Datenbank speicherst und verifiziere sie (bspw. beim Login) mit password_verify.

                              PHP-Code:
                              // ..
                              $password 'mysecret..';

                              $user = new User;
                              $user->password password_hash($passwordPASSWORD_DEFAULT);
                              $user->save(); 
                              PHP-Code:
                              public function login($email$password){
                              $user $this->users->findByEmail($email);
                              if(
                              password_verify($password$user->password)){
                              // password correct..
                              } else{
                              // password incorrect..
                              }

                              Aber doch nur beim erstellen? Oder sehe ich das falsch? Weil sonst wird ja ein bereits gehashtes Password erneut verschlüsselt und password_verifiy erhält ggf. nicht den Schlüssel "secret" sondern den Hash der ersten Verschlüsselung, etc.

                              Kommentar

                              Lädt...
                              X