PDA

Vollstndige Version anzeigen : crypt()


Doc_Dan
21-04-2002, 06:36
Hab ein problem ich will mit der Funktion Crypt
ein passwort verschlsseln.
Es sollte ja bei mehrmaliger Eingabe eines Passwortes auch immer der gleiche ververschlsste wert rauskommen nur passiert dies nicht. Wie kan ich den Fehler finden.

HAb das schon mit dem beispiel von SelfPHP probiert:
<?PHP
echo crypt("PHP - Die Befehlsreferenz");
?>

Hier ein paar ergebnisse:
$1$xk1Mbt.p$e0U/z8.MZ.Zz6.yWHCqB.0
$1$KZ4qnztS$untwPvFkexajK1xIkUA7G0
$1$w29001Pf$I1ON5/RRga.z3RnGRNmTs0

Das vorgegebene Ergebniss lautet:
CbCJjFbkdhYeo


ICh knnte jetzt ewig weitermachen aber das bringt ja nix *fg*

|Coding
21-04-2002, 15:42
Hi Doc_Dan,

zum verschlsseln kann ich dir nur empfehlen es mal hier mit zu versuchen, base64_encode() und base64_decode():


$to_encode = "1234567890aAbBcCdDeEfFgGhH";
$encode = base64_encode($to_encode);
echo "kodiert: ".$encode."<br><br>";
$decode = base64_decode($encode);
echo "dekodiert: ".$decode;

ausgabe:

kodiert: MTIzNDU2Nzg5MGFBYkJjQ2REZUVmRmdHaEg=
dekodiert: 1234567890aAbBcCdDeEfFgGhH

es bleibt immer gleich. ich denke das ist das was du suchst :)

ingo
21-04-2002, 16:28
ich htte da mal eine frage, die mich grundstzlich interessiert:

wieso verschlsselt jemand einen string mit crypt() wenn er nicht wieder umkehrbar ist? was bringen einwegschlssel?

wenn mir das jemand sagen knnte, wr ich euch sehr verbunden. das interessiert mich nmlich schon lnger wozu das gut sein soll/kann..

lg, ingo

|Coding
21-04-2002, 16:46
Naja so ganz ist mir das auch nicht klar, ??WARUM??, man nur verschlsselt und es nicht wieder umkehren kann. eigendlich gehen doch dann alle verschlsselten informationen verloren bzw. werden wertlos, oder ist das verkehrt?

Doc_Dan
21-04-2002, 17:49
DANKE

werde das jetzt ausprobieren

Mfg Doc_Dan

Doc_Dan
21-04-2002, 18:21
Denke das ist falsch denn sonst knntest du dich unter Unix/Linux gar nicht mehr anmelden denn das Passwort wird da so verschlsselt. Ka wie das funktioniert

Mfg Doc_Dan

|Coding
21-04-2002, 19:31
jo aber wie wird das entschlsselt? da muss es doch dann auch ne mglichkeit geben...

Nev
22-04-2002, 15:29
Hi @ll

Die Einweg-Verschlsselung hat schon einen Sinn.

Die Passwrter werden in einer Datei oder Datenbank gespeichert.
Wenn dann jemand dieses Ausliest kann er nix damit anfangen, da er es nicht zurckrechnen kann.

Die berprfung erfolgt so, das du das eingegebene Passwort wieder verschlsselst und mit dem gespeicherten Vergleichst.

Das ist der beste Schutz

Progman
23-04-2002, 01:05
um auf das 'Problem' auf crypt(); einzugehen. crypt(); erwartet einen optionalen Parameter, ich glaube der heit salt. Da muss man dann ein String oder sowas eingeben. Dann werden alle Strings gleich verschlsselt. auf http://www.php.net/ sieht man wie dieser Befehl aufgebaut ist.

md5(); ist aber besser als crypt(); denn crypt(); unterscheidet nur in den ersten 8 Zeichen eines Strings. Und md5(); erzeugt einen String der immer 32 Zeichen lang ist, ideal wenn man das Password in einer Datenbank speichern mchte. Man sollte hier den Typ VARCHAR(32) oder CHAR(32) nehmen. Einer der beiden (Varchar oder Char) sind auf konstante lngen optimiert. Infos auf http://www.mysql.de