Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Verschlüsselung

Einklappen

Neue Werbung 2019

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

  • PHP Verschlüsselung

    Hallo,
    ich habe bisher für meine Passwörter in PHP nur md5 Hashs verwendet, jetzt habe ich mich mal über crypt() informiert, allerdings ist dies doch auch nicht viel sicherer wenn ich den schlüssel angeben muss, wenn ich ihn nicht angebe, dann bekomme ich ja jedes mal vom gleichen Passwort einen anderen verschlüsselten Wert. Kann mir vielleicht jemand mögliche Verschlüsselungsarten nennen die sicher sind aber trotzdem einfach zu handhaben.
    MfG php10


  • #2
    Was möchtest du denn mit dem Verschlüsseln bezwecken und warum gefällt dir md5 nicht?

    Mit md5 bildet man übrigens einen hash und keinen verschlüsselten Wert.
    PHP-Code:
    if ($var != 0) {
      
    $var 0;

    Kommentar


    • #3
      http://www.php.de/beitragsarchiv/561...tml#post540915
      --

      „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


      • #4
        Ich weiß doch das md5 keine Verschlüsselung ist... steht doch auch da das ich md5 hashs verwendet habe...
        ich möchte die passwörter halt verschlüsseln, damit sie nicht im klartext ausgelesen werden können. bisher haben ich md5 hashs erstellt und habe nun erfahren das md5 nicht das sicherste ist und es auch möglich sein es zu dekodieren, obwohl ich mir nicht vorstellen kann wie das gehen soll...

        Kommentar


        • #5
          Zitat von php10 Beitrag anzeigen
          Ich weiß doch das md5 keine Verschlüsselung ist... [...]
          und es auch möglich sein es zu dekodieren
          D'oh!

          Wenn dir MD5 nicht mehr sicher genug ist - dann nimm halt einen anderen Algorithmus, bspw. SHA-1.

          Kommentar


          • #6
            Es gibt sog. Rainbowtabellen. Das sind Listen, bei denen der MD5-Hash für sehr viele Klar-Passwörter aufgeführt werden (google mal nach dem Begriff). Wenn nun jemand deine Usertabelle mit den Passwörtern klaut, dann kann er mit den MD5-Hashes auf die Originalpasswörter kommen und diese dann im System eingeben und damit Unsinn machen.

            Vermeiden kannst du das mit statischem und dynamischen Salt. Mehr dazu findest du über die Suchfunktion.
            PHP-Code:
            if ($var != 0) {
              
            $var 0;

            Kommentar


            • #7
              Wenn ich euch jetzt richtig verstehe wäre es auch nicht schlimm md5 weiterhin zu verwenden, 100%ige sicherheit gibt es sowieso nicht...
              SHA1 wäre auch ein Hash wie MD5, was wäre dann daran sicherer??

              Kommentar


              • #8
                Lerne Googlen.
                --

                „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


                • #9
                  einige Hash-Algorithmen, die relativ sicher sind: SHA256 (und größer), RIPEMD160 (und größer)

                  Kommentar


                  • #10
                    Hallo,

                    mach es doch wie von Wolla vorgeschlagen mit einem Salt. Ein Salt bedeutet, eine zufällige, feste Zeichenkette zusätzlich zum Passwort zu hashen. Sprich statt md5("geheim") nimmst du jedesmal md5($einZufaelligerFesterWert .$dasPasswort); Zufällig heißt, es kann irgendein String sein, fest heißt, er verändert sich nicht (da sich sonst ja auch die Hashsumme verändert und damit die Korrektheit des Passworts nicht mehr festgestellt werden kann). Wenn du diesen Salt lang genug wählst, z.B. $einZufaelligerFesterWert = "=)&%TJmÄHR:j/TK&_h%&/(/&%$WB#zuk5649gfk9";
                    dann ist es sehr unwahrscheinlich, dass "=)&%TJmÄHR:j/TK&_h%&/(/&%$WB#zuk5649gfk9geheim" (wenn $dasPasswort = "geheim") schon in irgendeiner Rainbowtabelle steht, da dort üblicherweise recht kurze Wörter oder Wörterbuchbegriffe mit ihrer Hashsumme hinterlegt sind.
                    "Mein Name ist Lohse, ich kaufe hier ein."

                    Kommentar


                    • #11
                      Mit Umlauten wäre ich allerings vorsichtig. Man sieht ja, was einige Leute schon plain mit UTF-8 bekommen. Lieber Ascii-Zeichen und dafür nen längeren Salt. Meine Meinung.
                      --

                      „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


                      • #12
                        Stimmt, war jetzt nur die Katze aufm Klavier.
                        "Mein Name ist Lohse, ich kaufe hier ein."

                        Kommentar


                        • #13
                          die Katze aufm Klavier
                          Autsch
                          --

                          „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


                          • #14
                            Wenn ich das Biest erwische...
                            "Mein Name ist Lohse, ich kaufe hier ein."

                            Kommentar


                            • #15
                              Zu diesem Thema habe ich mal eine Frage. Ich habe mir mal zu Testzwecken (erstmal nur interessehalber) eine Klasse geschrieben (im Prinzip hätte da auch eine Funktion gereicht), die so etwas ähnliches macht. Ich wollte nur mal fragen, ob das, so wie ich es gelöst habe, sinnvoll ist.

                              Es wird Benutzer und Kennwort übergeben und aus dem Benutzernamen das Salt erstellt. Und das in zwei verschiedenen Varianten dann vorne und hinten ans Kennwort angefügt. Aber seht einfach selbst ^^

                              Hier der Code:
                              PHP-Code:
                              class SaltedMd5
                              {
                                  private 
                              $user '';
                                  private 
                              $password '';
                                  
                                  public function 
                              __construct($user$password) {
                                      
                              $this->user $user;
                                      
                              $this->password $password;
                                  
                                  }
                                  
                                  public function 
                              __toString() {
                                      return 
                              $this->generate();
                                  }
                                  
                                  private function 
                              generate() {
                                      
                              $letters range('a''z');

                                      
                              $first strtolower$this->user[0] );

                                      
                              $rot_n array_keys($letters$first);

                                      
                              $n $rot_n[0] + 1;

                                      
                              $salt1 $this->str_rot(strrev($this->user), $n);
                                      
                              $salt2 $this->str_rot($this->user$n);
                                      
                                      return 
                              md5($salt1 $this->password $salt2);
                                  }


                                  private function 
                              str_rot($s$n 13) {
                                      
                              $n = (int)$n 26;
                                      if (!
                              $n) return $s;
                                      for (
                              $i 0$l strlen($s); $i $l$i++) {
                                          
                              $c ord($s[$i]);
                                          if (
                              $c >= 97 && $c <= 122) {
                                              
                              $s[$i] = chr(($c 71 $n) % 26 97);
                                          } else if (
                              $c >= 65 && $c <= 90) {
                                              
                              $s[$i] = chr(($c 39 $n) % 26 65);
                                          }
                                      }
                                      return 
                              $s;
                                  } 
                              }

                              $pwd = new SaltedMd5("dennis81""kennwort");

                              if ( 
                              $pwd == 'hash') { /*...*/ 
                              edit: Ganz vergessen, der Wert für die rot-n "Verschlüsselung" wird auch aus dem Benutzernamen (der ja statisch ist) gewonnen.
                              Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
                              Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

                              Kommentar

                              Lädt...
                              X