|
| Perl, crypt og MD5 Fra : Peter Sørensen |
Dato : 21-02-02 12:35 |
|
Hej,
Jeg har tidligere anvendt en perlkode til at sammenligne krypterede
password som følger:
# Match current passwd...
$pass = $ent[1];
$salt=substr($pass,0,2);
$encrypt = crypt($oldpass, $salt);
if ($pass ne $encrypt) {
warn "Wrong password entered for $username";
&auth_fail;
return;
}
Jeg har en en linux maskine med shadow password og skal lave det samme.
Jeg har været rundt og kigge på nettet men ikke fundet nogen løsning der
fungerer 100%.
F.x nedenstående:
use MD5;
$md5 = new MD5;
$md5->add($content{`passwd`});
$form_shadow = unpack("H*",$md5->digest());
open(PASSWD, "< md5passwd");
$auth = "N";
while (<PASSWD>) {
chomp;
($login, $shadow) = split(/:/, $_);
if (($login eq $content{`login`}) && ($form_shadow eq $shadow)){
$auth = "Y";
break;
}
}
close(PASSWD);
Jeg har også set henvisninger til at anvende crypt med et andet salt nemlig
de første
12 tegn af det krypterede password fra shadow filen men stadig uden held.
med venlig hilsen
Peter Sørensen/Syddansk Universitet/email: maspsr@dou.sdu.dk
Er der noger her der har en løsning??
| |
Peter Makholm (21-02-2002)
| Kommentar Fra : Peter Makholm |
Dato : 21-02-02 17:00 |
|
"Peter Sørensen" <maspsr@dou.sdu.dk> writes:
> Jeg har en en linux maskine med shadow password og skal lave det samme.
> Jeg har været rundt og kigge på nettet men ikke fundet nogen løsning der
> fungerer 100%.
Hvis du kikker i manualen istedet for på nettet så kan du læse følgede
om crypt funktionen:
When verifying an existing encrypted string you should use the
encrypted text as the salt (like "crypt($plain, $crypted) eq
$crypted"). This allows your code to work with the standard
"crypt" and with more exotic implementations.
Så virker det både med MD5- og SHA-hashede kodeord.
Læs 'perlfunc -f crypt', der er også det korrekte eksempel på hvordan
du tjekker kodeord.
--
Emacs er det eneste modernede styresystem der ikke er multitrådet.
| |
|
|