ENCRYPT()-Fkt.

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

  • ENCRYPT()-Fkt.

    Hallo zusammen,

    ich habe ein Problem:
    Ich habe mir auf meinem Rooty einen Mailserver nach folgender Anleitung aufgebaut:
    http://www.howtoforge.org/virtual_po..._quota_courier

    In diesem HowTo werden die Passwörter der Benutzer mittels der MySQL-Fkt. "ENCRYPT("Password")" in die Datenbank eingetragen. Der Login über den Mailserver via IMAP funktioniert auch soweit ohne Probleme, d.h. der Courier kann die Passwörter ohne Probleme abgleichen.

    Jetzt möchte ich allerdings eine PHP-Weboberfläche programmieren, womit es Möglich ist, seine Benutzereinstellungen selbst zu editieren. Um Missbrauch vorzubeugen möchte ich dabei u.a. zum ändern des E-Mail-Passwortes vorher einen Abgleich mit dem in der Datenbank hinterlegten, aber mit ENCRYPT verschlüsselten Passwort machen.
    Die Frage: Wie geht das? In der Doc. von MySQL steht nur, dass wenn bei ENCRYPT kein zweiter Parameter angegeben wird, ein zufälliger Wert genommen wird. Erstelle ich zwei Accounts mit dem gleichen Passwort, habe ich in der Datenbank zwei unterschiedlich Werte stehen. Aber irgendwie muss der Abgleich ja funktionieren, sonst hätte Postfix ja nicht die Möglichkeit, die Passwörter auf Richtigkeit zu prüfen.

    Ich hoffe, ihr könnt mir da weiterhelfen.

    LG

    Kalki

  • #2
    encrypt ist für passwörter nicht allzu geeignet:
    ENCRYPT() ignores all but the first eight characters of str, at least on some systems. This behavior is determined by the implementation of the underlying crypt() system call.
    generiere lieber einen md5 hash und speichere diesen in die datenbank. dann kannst du die eingabe des benutzers hashen und mit dem eintrag in der db vergleichen.

    Kommentar


    • #3
      bringt mir in dem konkreten fall jetzt aber nichts ...
      muss ja irgendwie eine möglichkeit geben, sonst könnte postfix ja auch keine passwörter kontrollieren, und der prüft das immer recht erfolgreich

      Kommentar


      • #4
        Original geschrieben von kalki85
        muss ja irgendwie eine möglichkeit geben, sonst könnte postfix ja auch keine passwörter kontrollieren, und der prüft das immer recht erfolgreich
        Dann hat sich PostFix wohl - im Gegensatz zu dir - ein kleines Bisschen über crypt informiert, vor allem auch bezüglich des Salzes ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          muss ja irgendwie eine möglichkeit geben, sonst könnte postfix ja auch keine passwörter kontrollieren, und der prüft das immer recht erfolgreich
          Wie bereits gesagt wäre es besser die PWs zu hashen. Die Usereingabe wird mit dem Hash verglichen und wenn das ganze übereinstimmt, stimmt das PW, das der User angegeben hat, mit an Sicherheit grenzender Wahrscheinlichkeit auch.

          So long + Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Also das mit den Salzes hab ich bisher auch noch nicht verstanden:
            Ich hab das irgendwie so verstanden, dass das quasi ein Schlüssel ist, der, wenn man ihn nicht angibt, zufällig gewählt wird.

            Wenn ich also was à la ENCRYPT("password") eingebe, wird ein zufälliger Schlüssel gewählt. Nur: woher weiss dann welche Schlüssel genommen wurde bzw. wie schafft es Postfix, das richtige Schlüsselwort zu nehmen.

            Ich weiss dass ich nicht so gut wie Postfix informiert bin, aber das ist ja auch der Grund, warum ich mich hier an das Forum wende, sonst hätte ich es ja nicht machen müssen.

            Kommentar


            • #7
              Original geschrieben von kalki85
              Wenn ich also was à la ENCRYPT("password") eingebe, wird ein zufälliger Schlüssel gewählt. Nur: woher weiss dann welche Schlüssel genommen wurde bzw. wie schafft es Postfix, das richtige Schlüsselwort zu nehmen.
              Es schaut im gespeicherten Hash nach - der bei Crypt auch das Salt enthält.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                ok, dann jetzt noch ne sache für dumme: wie schaut man im hash nach bzw. wie bildet man den? hab von dem krams noch nicht soooo viel ahnung :/
                kurzes (grobes) beispiel in php sollte reichen

                Kommentar


                • #9
                  http://de.wikipedia.org/wiki/Hash, weiter mit md5 oder sha1 oder was auch immer. im manual zu php sowie mysql findest du beispiele zu den einschlägigen schlüsselwörtern.

                  Kommentar


                  • #10
                    so, ich hab jetzt die lösung für mein problem gefunden ... hab zwar was länger zu gebraucht, aber die entsprechende funktion dann in der php-doku gefunden.

                    für die, die es vllt. auch nochmal benötigen, hier die entsprechende stelle in der doku für php:
                    http://de2.php.net/crypt

                    ansonsten allen, die mich mit der nase in die entsprechende richtung gedeut haben: vielen dank!

                    Kommentar

                    Lädt...
                    X