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. Zitieren
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 Zitieren
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: Zitieren
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 Zitieren
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! Zitieren
kathi008 Geschrieben 18. Dezember 2002 Autor Geschrieben 18. Dezember 2002 Ich habs gefunnden!!!:bimei if($result[$pass] == crypt($passwort,$result[$pass]) Trotzdem danke! Zitieren
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 Zitieren
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:) Zitieren
HotkeyM Geschrieben 18. Dezember 2002 Geschrieben 18. Dezember 2002 Und warum nimmst du nicht die funktion "password()"??? zu unsicher? *g* The HotkeyM Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.