crypt unter perl
Ricardo
- perl
Hallo allerseits,
wie kann man die crypt an weisung unter Perl verwenden. Ich benötige sie um selbst unter apache .htaccess Dateien zu erstellen
Ricardo
Hi,
wie kann man die crypt an weisung unter Perl verwenden. Ich benötige sie um selbst unter apache .htaccess Dateien zu erstellen
perldoc -f crypt sagt Dir alles, was Du wissen mußt. Auf einigen archaischen Systemen (Windows) haben einige Perl-Versionen kein crypt (Zitat) "due to excessive paranoia". Schaue Dich für diese Systeme auf http://www.perl.com/CPAN/ nach entsprechenden Modulen um.
Cheatah
hi,
wenn dein system das unterstützt (linux oder so) dann einfach:
$crypted_string = crypt($string,$salz);
wobei $salz (frei übersetzt ;) sowas wie ein verschlüsselungscode ist.
bye, Spark
hi,
selber hi!
wobei $salz (frei übersetzt ;) sowas wie ein verschlüsselungscode ist.
Was sich dahinter verbirgt, kannst Du u.a. hier nachlesen: <../../sfarchiv/2000_1/t11109.htm>.
Guß Frank
wobei $salz (frei übersetzt ;) sowas wie ein verschlüsselungscode ist.
Was sich dahinter verbirgt, kannst Du u.a. hier nachlesen: <../../sfarchiv/2000_1/t11109.htm>.
gut, thx, das hatte ich mir so schon gedacht. war mir bissher nur ziemlich egal weils ja funktioniert *g*
Guß Frank
pass auf wo du hingießt ;)
Spark
Hallo Ricardo
Vielleich so (inkl. mehr oder minder zufälliger Generierung des salt):
$pass = [das gewünschte Passwort];
@set = ('a'..'z');
for ($i = 0; $i < 2; $i++) {
$randum_num = int(rand($#set + 1));
$salt .= @set[$randum_num];
}
$crypt = crypt($pass, $salt);
Gruss,
Thorsten
hi,
Vielleich so (inkl. mehr oder minder zufälliger Generierung des salt):
»» $pass = [das gewünschte Passwort];
»» @set = ('a'..'z');
»» for ($i = 0; $i < 2; $i++) {
»» $randum_num = int(rand($#set + 1));
»» $salt .= @set[$randum_num];
»» }
»»
»» $crypt = crypt($pass, $salt);
macht das wirklich sinn? ich meine, sollte man ein "zufallssalz" generieren?
immerhin muss man das dann ja auch irgendwie immer abspeichern, sonst nützt einem das verschlüsselte ding ja nichts mehr oder liege ich da falsch?
Spark
Hi,
macht das wirklich sinn? ich meine, sollte man ein "zufallssalz" generieren?
ja, auf jeden Fall. Das erhöht die Sicherheit immens.
immerhin muss man das dann ja auch irgendwie immer abspeichern, sonst nützt einem das verschlüsselte ding ja nichts mehr oder liege ich da falsch?
Die ersten zwei Zeichen des gecrypteten Passwords _sind_ das Salt.
Cheatah
Die ersten zwei Zeichen des gecrypteten Passwords _sind_ das Salt.
Und um den Gedankengang fortzufuehren: Deshalb benutzt man einfach das verschluesselte Passwort als salt, wenn man ein unverschluesseltes auf Richtigkeit ueberpruefen will. Es muss wieder das verschluesselte herauskommen. Also:
$access_granted = (crypt($password, $crypted) eq $crypted) ? 1 : 0;
wobei $password das vom Benutzer eingegeben Passwort ist, $crypted das verschluesselte, und $access_granted ein Boolean, in dem dann steht, ob das eingegebene Passwort richtig ist.
So long
Und um den Gedankengang fortzufuehren: Deshalb benutzt man einfach das verschluesselte Passwort als salt, wenn man ein unverschluesseltes auf Richtigkeit ueberpruefen will. Es muss wieder das verschluesselte herauskommen. Also:
»» $access_granted = (crypt($password, $crypted) eq $crypted) ? 1 : 0;
wobei $password das vom Benutzer eingegeben Passwort ist, $crypted das verschluesselte, und $access_granted ein Boolean, in dem dann steht, ob das eingegebene Passwort richtig ist.
thx :) jetzt hab ichs sogar verstanden.
nur, warum muss man das salt jedesmal neu berechnen? das ist doch ziemlich umständlich.
es wäre einfacher einfach crypt($password) schreiben zu können und perl berechnet das zufalls salt dann selbeständig.
gibt es diese möglichkeit oder sollte man sich dafür eine eigene kleine routine schreiben?
Spark
thx :) jetzt hab ichs sogar verstanden.
nur, warum muss man das salt jedesmal neu berechnen? das ist doch ziemlich umständlich.
Keiner verlangt, dass Du es immer neu berechnest, Du kannst natuerlich auch immer dasselbe verwenden. Nur dann braeuchte man auch gar kein salt. Man *will* aber eins haben: Verschluesselt man denselben String mit einem anderen Salt, ist bekanntlich das Ergebnis ein anderes. Wenn nun z.B. mehrere User dasselbe Passwort verwenden, oder derselbe User verwendet an verschiedenen Stellen dasselbe (wird ja gern gemacht), kann man dies wegem dem unterschiedlichen Salt nicht anhand der gecrypteten Strings feststellen. Das ist meines Wissens alles, was hinter der Sache steckt.
es wäre einfacher einfach crypt($password) schreiben zu können und perl berechnet das zufalls salt dann selbeständig.
Klar, mach doch einfach ne Funktion mycrypt(), die das macht. Du brauchst aber trotzdem noch die einfache crypt-Funktion, denn zum Vergleichen, ob ein Passwort korrekt ist, musst Du ja das verschluesselte Passwort als Salt angeben koennen. Kann man aber beides zu einer Funktion zusammenfassen, ungefaehr so:
sub mycrypt {
my ($string, $salt) = (shift, shift);
unless (defined($salt)) { # kein salt uebergeben -> selber eins bauen
my @set = ('.', '/', 0..9, 'A'..'Z', 'a'..'z');
$salt = $set[rand(64)] . $set[rand(64)];
}
return crypt($strimg, $salt);
}
So long
hi!
$pass = [das gewünschte Passwort];
@set = ('a'..'z');
Damit schließt du allerdings nur einen Teil der möglichen verwendbaren ein.
for ($i = 0; $i < 2; $i++) {
$randum_num = int(rand($#set + 1));
$salt .= @set[$randum_num];
}
$crypt = crypt($pass, $salt);
Kürzer:
=== cut ===
my $salt = join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];
my $crypt = crypt $pass, $salt;
=== cut ===
bye, Frank!