Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

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

  • 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:

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

  • 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!:rolleyes:

Bin echt verzweifelt!:(

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

  • 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:)

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.