Ankündigung

Einklappen
Keine Ankündigung bisher.

Hash-Werte

Einklappen

Neue Werbung 2019

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

  • Hash-Werte

    Mein Datenbank-Skript wandelt die Passwörter in SHA 1 um z.B.
    INSERT INTO tb_user (user_name, user_pwd, user_userstat, user_dept)
    VALUES ("Administrator", SHA1("xxxxxx"), "Chief-Administrator", "IT");

    in meinem Login Skript wird der Hash wert mit dem was eingegeben wird verglichen. Das klappt auch alles soweit.

    Wenn ich aber über ein Formular das Passwort in die Datenbank SHA1 verschlüsselt schreiben will, kommt ein anderer Hash-Wert raus.
    Kann mir jemand erklären warum da verschiedene Hash Werte rauskommen?

  • #2
    Zitat von Raito Beitrag anzeigen
    Wenn ich aber über ein Formular das Passwort in die Datenbank SHA1 verschlüsselt schreiben will, kommt ein anderer Hash-Wert raus.
    Das Formular schreibt in die Datenbank? Glaube ich nicht. Der Browser schickt wohl eher die Formulardaten an den Webserver und dort werden sie von einem PHP Skript verarbeitet und in eine Datenbank geschrieben? Vielleicht solltest Du uns lieber den Code zeigen.

    Kommentar


    • #3
      Das ist der Code:
      PHP-Code:
       $sql "INSERT INTO tb_user (user_name, user_dept, user_userstat, user_pwd) VALUES ('$_POST[user_name]', '$_POST[user_dept]', '$_POST[user_userstat]', '".SHA1($_POST['user_pwd'])."')"
      Wenn ich mir die Passwortspalte anschau sieht das Passwort test dann umgewandelt so aus:
      da39a3ee5e6b4b0d3255bfef95601890afd80709
      Wenn ich mir das ausgebe (echo sha1('$_POST['user_pwd']); )
      dann kommt das raus :
      6ea79b40aac21e344effacead77b234fae0784d1

      Kommentar


      • #4
        Ok, damit fügst Du wohl einen neuen Benutzer ein. Das funktioniert?
        Was funktioniert nicht und wie sieht der dazugehörige Code aus? Wie hast Du diesen Code getestet? Mit welchen Werten? Hast Du Dir die Werte ausgeben lassen? (Ein passendes var_dump bewirkt manchmal Wunder.) Was ist dabei herausgekommen?

        Kommentar


        • #5
          Das Einfügen des neuen Benutzers funktioniert.
          getestet siehe oben.

          Kommentar


          • #6
            Und wie lautete das Passwort aus dem Beispiel?

            Ich habe es gerade hier mal getestet und
            Code:
            select sha1('abcdef')
            als auch
            PHP-Code:
            echo sha1('abcdef'); 
            liefern beide das Ergebnis
            1f8ac10f23c5b5bc1167bda84b833e5c057a77d2
            echo sha1('$_POST['user_pwd']);
            Das erzeugt einen parse error. Wie sieht der _echte_ Code aus?


            edit:
            Rate mal, was
            PHP-Code:
            echo sha1(''); 
            ausgibt
            da39a3ee5e6b4b0d3255bfef95601890afd80709
            Tipp:
            PHP-Code:
            error_reporting(E_ALL);
            ini_set('display_errors'1); 
            an den Anfang des Skripts schreiben und nochmal testen.

            Kommentar


            • #7
              PHP-Code:
              if (isset ($_POST['submit'])) {
                  if(empty (
              $_POST['user_name']))
                     { 
              $msg2 "<font color='red'>Benutzername fehlt</font><br>"; }
                  else {     
              $name 1;
                          if(empty (
              $_POST['user_password']))
                                   { 
              $msg2 "<font color='red'>Passwort fehlt</font><br>"; }
                                      else { 
              $pwd 1; } }
                                       if (
              $pwd == && $name == 1)
                  { 
              $sql2 "INSERT INTO tb_user (user_name, user_dept, user_userstat, user_pwd) VALUES ('$_POST[user_name]', '$_POST[user_dept]', '$_POST[user_userstat]', '".SHA1($_POST['user_pwd'])."')";
                    
              $result2 mysql_query($sql2);
                  if (
              $result2)
                              { 
              $msg3 "<font color='green'>Dateneingabe erfolgreich</font><br>"; }
                           else
                           { 
              $msg3 "<font color='red'>Dateneingabe fehlgeschlagen</font><br>"; }
              }

              Das komplette Formular
              PHP-Code:
                  echo "<form action='$_SERVER[PHP_SELF]' method='POST'>\n";
                  echo 
              "  <table border='0' cellpadding='5' cellspacing='0' bgcolor='#E0E0E0'>\n";
                  echo 
              "    <tr>\n";
                  echo 
              "      <td align='right'>Name</td>\n";
                  echo 
              "      <td><input name='user_name' type='text' value='$_POST[user_name]'></td>\n";
                  echo 
              "    </tr>\n";
                  echo 
              "    <tr>\n";
                  echo 
              "      <td align='right'>Passwort</td>\n";
                  echo 
              "      <td><input name='user_password' type='password' value='$_POST[user_pwd]'></td>\n";
                  echo 
              "    </tr>\n";
                  echo 
              "    <tr>\n";
                  echo 
              "       <td align='right'>Status</td> <td>\n";
                  echo 
              "     <select name='user_userstat' value='$_POST[user_userstat]'>\n";
                  echo 
              $stats;
                  echo 
              "    </select></td>\n";
                  echo 
              "    </tr>\n";
                  echo 
              "    <tr>\n";
                  echo 
              "     <td align='right'>Abteilung</td>\n";
                  echo 
              "     <td>\n";
                  echo 
              "     <select name='user_dept' value='$_POST[user_dept]'>\n";
                  echo 
              $depts;
                  echo 
              "    </select></td>\n";
                  echo 
              "</tr>\n";
                  echo 
              "<tr>\n";
                  echo 
              "<td align='right'></td>\n";
                  echo 
              "<td>\n";
                  echo 
              "<input type='submit' name ='submit' value=' Absenden '>\n";
                  echo 
              "<input type='reset' value=' Felder leeren '>\n";
                  echo 
              "</td>\n";
                  echo 
              "</tr>\n";
                  echo 
              "</table>\n";
                  echo 
              "</form>\n"
              also Benutzername, Abteilung und Status landen in der Datenbank.
              Das das SHA1($_POST['user_pwd']) leer ist habe ich auch gerade mit var_dump festgestellt.
              Aber wieso ist es leer?

              Kommentar


              • #8
                Warum gibst Du denn jede Zeile einzeln mit echo "Zeichenkette\n" aus?
                php kann mit mehrzeiligen Zeichenketten umgehen
                PHP-Code:
                echo '<form method="post" action="">
                  <div>
                    <input usw usw
                  '

                und Du kannst auch den PHP Block verlassen, um größere Mengen Text auszugeben
                PHP-Code:
                <?php
                $x 
                1234;
                ?>
                <form method="post" action="">
                  <div>
                    <input type="text" name="textfeld1" value="<?php echo $x?>" />
                    <input type="text" name="textfeld2" />
                    <input type="text" name="textfeld3" />
                    <input type="text" name="textfeld4" />
                    <input type="submit" />
                  </div>
                </form>
                <?php
                // und weiter im PHP Code
                Und schau Dir doch einfach mal an, was in $_POSR drin steht
                PHP-Code:
                echo '<pre>'var_dump($_POST); echo '</pre>';
                if (isset (
                $_POST['submit'])) { 
                Auf jeden Fall error_reporting(E_ALL) und display_errors=On einstellen auf Deinem Entwicklungsserver.

                Kommentar


                • #9
                  Zitat von Raito Beitrag anzeigen
                  Datenbank.
                  Das das SHA1($_POST['user_pwd']) leer ist habe ich auch gerade mit var_dump festgestellt.
                  Aber wieso ist es leer?
                  Schau deinen Code an, und du siehst, dass das Passwort eben nicht user_pwd heisst. Wenn du David's Tipp befolgt hättest, dann hättest du auch die entsprechende Fehlermeldung erhalten.
                  Und so nebenbei, Input-Felder vom Typ password können nicht mit value vorbelegt werden.
                  Gruss
                  L

                  Kommentar


                  • #10
                    hab ich auch grad bemerkt. trotzdem danke für die info

                    Kommentar


                    • #11
                      hab cih vorhin auhc festgestellt trotzdem danke

                      Kommentar

                      Lädt...
                      X