Crypt und wie wieder herausfinden was es war?

Hallo zusammen,
ich möchte gerne Passwörter von Usern in meine Datenbank ablegen.
Dafür möchte ich die PHP-Funktion crypt verwenden.
Doch wie finde ich heraus, ob das in der Datenbank abgelegte, verschlüsselte Passwort mit dem eingegebenen Passwort übereinstimmt?
Schließlich ist das crypt-Passwort mittels Einwegschlüssel verschlüsselt…
Wie vergleiche ich also die beiden Passwörter?

Vielen Dank schonmal im voraus!
Gruß Mike

PS: Da fällt mir noch ein…wie zum Teu… kann ich auf Eigenschaften von Objekten zugreifen?
$objektname->eigenschaft funktioniert irgendwie nicht… ;(
Muss ich jedesmal eine Methode bemühen?
Danke nochmal… :wink:

Hallo zusammen,
ich möchte gerne Passwörter von Usern in meine Datenbank
ablegen.
Dafür möchte ich die PHP-Funktion crypt verwenden.
Doch wie finde ich heraus, ob das in der Datenbank abgelegte,
verschlüsselte Passwort mit dem eingegebenen Passwort
übereinstimmt?
Schließlich ist das crypt-Passwort mittels Einwegschlüssel
verschlüsselt…
Wie vergleiche ich also die beiden Passwörter?

if (crypt ($db_pass) == crypt ($eingeb_pass)) { echo „Mann bin ich deppert“; }
Nimm aber lieber md5 her, ist sicherer. Du kannst das md5-verschlüsselte Passwort auch in einem Cookie abspeichern und mit dem Passwort der DB vergleichen.
Ich würde dir aber raten die Passwörter in der DB von vornherein auch mit md5 zu verschlüsseln. Ausser du bist am Sammeln von Daten interessiert…
Noch besser bei einem Cookie ist es aus md5-Passwort und einer Zufallszahl einen md5 string zu basteln und setcookie(), Zufallszahl in der DB aktualisieren. Hat
bei mir immer funktioniert obwohl ich nie die Sicherheit überprüft habe.

PS: Da fällt mir noch ein…wie zum Teu… kann ich auf
Eigenschaften von Objekten zugreifen?
$objektname->eigenschaft funktioniert irgendwie nicht… ;(
Muss ich jedesmal eine Methode bemühen?

Funktioniert wohl.

Hallo TomK32,
schon mal gemacht?
Ich glaube nicht… :wink:
Wie schon gesagt, verschlüsselt crypt mittels einzigartigem Einwegschlüssel, das heißt, jede crypt()-Rückgabe eines Strings ist anders…
Selbstverständlich will ich die Passwörter gecryptet in der DB ablegen…sonst hätt das ganze ja keinen Sinn…

Zu den Eigenschaften…
Nein funktioniert auch nicht…sonst hätt ich kein Problem mit den bösen Eigenschaften… :wink:
Bisher muss ich jedesmal eine dämliche Methode schreiben, die mir den dämlichen Eigenschaftswert zurückgibt…

Gruß Mike

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Mike,

ich möchte gerne Passwörter von Usern in meine Datenbank
ablegen.
Dafür möchte ich die PHP-Funktion crypt verwenden.
Doch wie finde ich heraus, ob das in der Datenbank abgelegte,
verschlüsselte Passwort mit dem eingegebenen Passwort
übereinstimmt?

wie schon beschrieben, das übergebene Passwort ebenfalls mit crypt() verschlüsseln und die Ergebnisse vergleichen. Du musst allerdings auf den salt-Value achten :smile:
Der Salt-Value besteht immer aus den ersten beiden Zeichen des gecrypteten Strings.

Gruß
Marian

Hallo TomK32,
schon mal gemacht?
Ich glaube nicht… :wink:
Wie schon gesagt, verschlüsselt crypt mittels einzigartigem
Einwegschlüssel, das heißt, jede crypt()-Rückgabe eines
Strings ist anders…

Nicht ganz, es wird vor dem verschlüsseln ein Zufallswert (der salt) hinzugefügt (und ins Ergebnis übernommen), beim Standart-Crypt sind das die ersten 2 Zeichen. Beim Vergleichen muss man daher das gecryptete Passwort mit angegeben werden:

Beim Speichern:
$db_pass = crypt($eingeb_pass);

Vergleichen (db_pass ist gecryptet):
if (crypt($eingeb_pass, $db_pass) == $db_pass) { „Ok“ }

Zu den Eigenschaften…
Nein funktioniert auch nicht…sonst hätt ich kein Problem mit
den bösen Eigenschaften… :wink:

Das da unten funktioniert, was ist bei dir anders ?

<?php class Foo {
var $bar; function Foo() { $this-\>bar="Test"; } } $bla = new Foo(); echo $bla-\>bar; ?\> Alexander