/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
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.

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409075
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste