Avatar billede public2 Nybegynder
09. juni 2009 - 10:10 Der er 4 kommentarer og
1 løsning

sha1 og md5: Forskel og anvendelse?

Hej eksperter,

Jeg sidder og er ved at lave et login & brugerregistrerings modul i PHP, og tager udgangspunkt i to scripts som jeg har fundet, men vil så gerne udbygge det til ét, som passer til mine behov.

Nu er jeg så løbet ind i noget jeg ikke lige kan forstå forskellen på, og håber at i på meget simpelt dansk vil forklare mig det :-)

I det ene script bruger de koden når man logger ind:
    $md5pass = md5($_POST['usr_pwd']);

I det andet script bruger de koden:
    $hashed_password = sha1($password);

Jeg har været inde på php.net og læse om sha1, som er ukendt for mig (har brugt md5 før, hvor jeg både gemmer brugerens adgangskode i databasen når de opretter sig i systemet, med md5 kryptering).

Hvert script gemmer ligeledes adgangskoderne for nyoprettede brugere i databasen med henholdsvis md5 og sha1.

Er der en metode at foretrække frem for en anden eller er der nogle særlige ting at være opmærksomme på fra min side? og hvad er konkret forskellen på de to typer?

På forhånd tak for jeres svar

- Emil
Avatar billede tjaz Nybegynder
09. juni 2009 - 10:20 #1
Håber du kan bruge det her til noget :)

SHA-1: The Secure Hash Algorithm (SHA) was developed by NIST and is specified in the Secure Hash Standard (SHS, FIPS 180). SHA-1 is a revision to this version and was published in 1994. It is also described in the ANSI X9.30 (part 2) standard. SHA-1 produces a 160-bit (20 byte) message digest. Although slower than MD5, this larger digest size makes it stronger against brute force attacks.

MD5: MD5 was developed by Professor Ronald L. Rivest in 1994. Its 128 bit (16 byte) message digest makes it a faster implementation than SHA-1.

In both cases, the fingerprint (message digest) is also non-reversable.... your data cannot be retrieved from the message digest, yet as stated earlier, the digest uniquely identifies the data.
Avatar billede public2 Nybegynder
09. juni 2009 - 10:45 #2
Hej tjaz,

tak for dit hurtige svar. Spændende læsning, men jeg er stadig lidt mystificeret omkring hvilken en af dem jeg skal bruge og om der er fordele / ulemper ved dem ud over hastigheden.

Jeg bygger ikke kæmpe million-brugere sider, så det er hvilken løsning som passer bedst til mig, men det opklare da lidt med dine to citater.
Avatar billede repox Seniormester
09. juni 2009 - 12:37 #3
Til brug i det som du nævner her vil der ikke være nævneværdige forskelle i sikkerheden.

Når man taler envejskryptering vil du typisk også støde på begrebet 'rainbow table' som i realiteten er en oversigt over envejskrypterede strenge.

Eksempel: md5("hello world") vil altid give 5eb63bbbe01eeed093cb22bb8f5acdc3
Slår du MD5 strengen op i en rainbow table, vil du få strengen "hello world" retur.

For at komme ud over det sikkerhedsaspekt (som også vil gælde for sha1) kan du benytte dig af et 'salt'.
Salt'et er en streng som kun du kender, som du så sætter sammen med dit kodeord og danner derfor en anden md5 for "hello world" end hvis du ikke gjorde.
F.eks:
<?php

    $password = "hello world";

    echo md5($password);
    //5eb63bbbe01eeed093cb22bb8f5acdc3

    $salt = "63jhdf.due493.'\$ty+";
    echo md5($salt.$password);
    //0628edfb25031689fa05529c3d1e80fb

?>

det vil nu være nytteløst at slå din MD5 streng op i en rainbow table - det er jo kun dig der kender salt'et.
Avatar billede public2 Nybegynder
09. juni 2009 - 22:14 #4
Hey repox,

tak for din gode og udførelige forklaring. Jeg føler mig lidt mere inde i det nu, har også læst lidt mere om det på vores allesammens Wikipedia, og tror bare at jeg vælger den metode mit præmire script jeg tager udgangspunkt i, bruger. Tror det er sha1.

Men super idé og metode med det $salt - den vil jeg straks kigge på. Jeg kan jo lige så godt gøre det sikkert fra starten af :-)

Synes begge svar har været gode, men må nok sige at der ikke kom så meget nyt under solen for mig med omkring forklaringen på de to typer, som kom fra tjaz, så repox, hvis du vil smide et svar, så skal du blive kvitteret med en stak point :-)

- Emil
Avatar billede repox Seniormester
09. juni 2009 - 22:19 #5
Jamen, det kom her, så :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester