Moin Moin!
Ich rieche hier "Passwort speichern und prüfen".
Dazu braucht es keine Verschlüsselung, im Gegenteil: Verschlüsselung ist hier GEFÄHRLICH. Denn der Entschlüsselungsalgorithmus und der Schlüssel müssen genau an der Stelle liegen, die beim Einbruch extrem gefährdet ist: Auf dem Server. Kommt jemand so weit, dass er Deine Password-Tabelle auslesen kann, kommt er in aller Regel auch an den Schlüssel und die Entschlüsselungsfunktion. Da kannst Du also genau so gut gleich Klartext speichern.
Deshalb benutzt man ein anderes Verfahren: Man berechnet einen Hashfunktion (eine Prüfsumme) über das Passwort und speichert nur diese Prüfsumme. Statt das eingegebene Passwort mit dem Original zu vergleichen, berechnet man aus der Eingabe wieder die selbe Hashfunktion und prüft, ob deren Ergebnis mit dem in der Datenbank übereinstimmt.
Problem: Gleiche Passworte erzeugen gleiche Hash-Werte. Daher benutzt man einen "Salt"-Wert, der zusätzlich mit in die Hash-Funktion gegeben wird. Das kann der Login-Name sein, besser ist aber ein zufälliger (String-)Wert, den man natürlich auch in der DB speichern muß.
Als Hash-Funktion nahm man crypt (katastrophal schlecht, weil es nur 8 Zeichen verarbeitet und alles andere ignoriert) oder MD5 (besser als nichts, aber quasi geknackt), Stand der Technik dürften die SHA-Funktionen und härtere Geschütze sein.
Das Digest-Package bringt einige Funktionen mit, über deren jeweilige Qualität sollte u.a. Wikipedia Auskunft erteilen können.
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".