Veröffentlicht 17. Dezember 200222 j 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.
17. Dezember 200222 j 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
18. Dezember 200222 j Autor 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:
18. Dezember 200222 j 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
18. Dezember 200222 j Autor 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!
18. Dezember 200222 j Autor Ich habs gefunnden!!!:bimei if($result[$pass] == crypt($passwort,$result[$pass]) Trotzdem danke!
18. Dezember 200222 j 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
18. Dezember 200222 j Autor 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:)
18. Dezember 200222 j Und warum nimmst du nicht die funktion "password()"??? zu unsicher? *g* The HotkeyM
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.