Michael Schröpl: Wie benutzt man "crypt"?

Beitrag lesen

Ich weiss nicht, ob perl unter Windows das auch macht, weil Windows scheints kein crypt() bereitstellt.

crypt PLAINTEXT,SALT
   May not be available if library or source was not provided when building perl. (Win32)
(aus perlport.html von ActivePerl 5.005)

Es scheint also möglich zu sein, ein Perl für Windows so zusammenzubauen, daß eine crypt()-Funktion verfügbar ist - nur muß man dafür erst mal eine haben.

Schnell noch das, was Perl selbst über crypt() schreibt - es las sich so nett:

crypt PLAINTEXT,SALT

Encrypts a string exactly like the crypt(3) function in the C library (assuming that you actually have a version there that has not been extirpated as a potential munition). This can prove useful for checking the password file for lousy passwords, amongst other things. Only the guys wearing white hats should do this.

Note that crypt() is intended to be a one-way function, much like breaking eggs to make an omelette. There is no (known) corresponding decrypt function. As a result, this function isn't all that useful for cryptography. (For that, see your nearby CPAN mirror.)

Here's an example that makes sure that whoever runs this program knows their own password:

$pwd = (getpwuid($<))[1];
       $salt = substr($pwd, 0, 2);

system "stty -echo";
       print "Password: ";
       chop($word = <STDIN>);
       print "\n";
       system "stty echo";

if (crypt($word, $salt) ne $pwd) {
           die "Sorry...\n";
       } else {
           print "ok\n";
       }

Of course, typing in your own password to whoever asks you for it is unwise.