kathi008 Geschrieben 17. Dezember 2002 Geschrieben 17. Dezember 2002 Hallo, ich habe folgendes Problem. Ich habe ein Einlogenformular mit dem user und passwort. Nun will ich prüfen, ob das Passwort auch von diesem User ist. Das Problem ist, das Passwort liegt in der Datenbank verschlüsselt mit der mysqlfunktion ENCRYPT() vor. Eingegeben wird dieser jedoch im Klartext. Wie vergleiche ich das eingegebene Passwort und das aus der Datenbank?:confused: Weiß echt nicht womit ich anfangen soll. Wäre sehr dankbar für die Antwort.
Jaraz Geschrieben 17. Dezember 2002 Geschrieben 17. Dezember 2002 Originally posted by kathi008 Wie vergleiche ich das eingegebene Passwort und das aus der Datenbank?:confused: Indem du das eingegebene Passwort ebenfalls mit ENCRYPT() bearbeitest und mit dem Wert in der Datenbank vergleichst. Also in der Art: SELECT id FROM user WHERE name = 'name' AND password = ENCRYPT('deineingegebenespasswort') ENCRYPT hat optional einen salt den du vielleicht berücksichtigen musst: ---------------- ENCRYPT(str[,salt]) Encrypt str using the Unix crypt() system call. The salt argument should be a string with two characters. (As of MySQL Version 3.22.16, salt may be longer than two characters.): mysql> SELECT ENCRYPT("hello"); -> 'VxuFAJXVARROc' If crypt() is not available on your system, ENCRYPT() always returns NULL. ENCRYPT() ignores all but the first 8 characters of str, at least on some systems. This will be determined by the behaviour of the underlying crypt() system call. ---------------- Gruß Jaraz
kathi008 Geschrieben 18. Dezember 2002 Autor Geschrieben 18. Dezember 2002 Hallo, hat jemand schon Erfahrung mit sowas? Was für zwei(oder mehr) Zeichen sollen in 'salt' stehen? Ohne diesen Argument funktioniert es nicht. Die Datem werden in der Mysqldatenbank angelegt und da wird einfach die Funktion ENCRYPT('passwort') aufgerufen. Habe gehört, diese Funktion kodiert ein und desselbe Wort jedesmal anders. Wie kann ich das dann vergleichen???:confused:
Jaraz Geschrieben 18. Dezember 2002 Geschrieben 18. Dezember 2002 Hi, ENCRYPT setzt auf die Betriebssystemfunktion crypt auf. Sind die Daten auf der gleichen Maschine eingefügt worden? ENCRYPT liefert mit gleichem Salt und Passwort immer den gleichen Wert. Da crypt auf windows nicht zur verfügung steht, liefert ENCRYPT unter Windows null. Um Betriebssystem unabhängig zu arbeiten, kann man die Mysql interne Funktion PASSWORD verwenden. Gruß Jaraz
kathi008 Geschrieben 18. Dezember 2002 Autor Geschrieben 18. Dezember 2002 Sind die Daten auf der gleichen Maschine eingefügt worden? Ja, läuft unter Linux. ENCRYPT liefert mit gleichem Salt und Passwort immer den gleichen Wert. Das ist es ja. Es wurde gar kein Salt verwendet! Bin echt verzweifelt!
kathi008 Geschrieben 18. Dezember 2002 Autor Geschrieben 18. Dezember 2002 Ich habs gefunnden!!!:bimei if($result[$pass] == crypt($passwort,$result[$pass]) Trotzdem danke!
Jaraz Geschrieben 18. Dezember 2002 Geschrieben 18. Dezember 2002 Originally posted by kathi008 if($result[$pass] == crypt($passwort,$result[$pass]) Bist du dir da sicher? Was soll denn da was sein? Du übergibst crypt als salt das, was bei crypt rauskommen soll? :confused: Gruß Jaraz
kathi008 Geschrieben 18. Dezember 2002 Autor Geschrieben 18. Dezember 2002 Kommisch, aber wahr. Als Salt nimmst du das cokierte Passwort in der Datenbank und schon funktionierts! Hab ausprobiert, die Funktion liefert genau desselben Wert, wie in der Datenbank:)
HotkeyM Geschrieben 18. Dezember 2002 Geschrieben 18. Dezember 2002 Und warum nimmst du nicht die funktion "password()"??? zu unsicher? *g* The HotkeyM
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden