This question is answered in the
IAQ,
under the question "How do I decrypt a string that I encrypted with
crypt()?" (since
crypt
generates "UNIX style passwords", usually). To quote their
answer:
sub decrypt {
my $c = shift;
my @c = (0) x 8;
for (;;) {
my $i = 0;
my $s = join '', map chr, @c;
return $s if crypt($s, $c) eq $c;
$c[$i]=0, $i++ while $c[$i] == 255;
return undef if $i > 7;
$c[$i]++;
}
}
(For the humor impaired, the IAQ is not serious; quoth crypt's docs: "Note that "crypt" is intended to be a one-way function... There is no (known) corresponding
decrypt function." This functions attempts to
brute force the crypt'd string and thus is extremely slow.)