ve_gard Skrevet 1. mai 2008 Del Skrevet 1. mai 2008 (endret) Som spørsmålet lyder... Hvilken hash/kryptering er den beste du kan ta i bruk. Er det md5, eller er det en annen algoritme som er bedre? mvh Vegard Endret 1. mai 2008 av ve_gard Lenke til kommentar
pulse Skrevet 1. mai 2008 Del Skrevet 1. mai 2008 Den beste vet jeg ikke, men sha1 + salt er vel noe bedre enn md5. Lenke til kommentar
ve_gard Skrevet 1. mai 2008 Forfatter Del Skrevet 1. mai 2008 har lest litt å funnet ut at ulikheten i md5 og sha1 er lengden. Sha1 er en 40bits hasj-streng, mens md5 er en 32 bits hash-streng. Når det er avklart, er det noen sikrere metoder? mvh vegard Lenke til kommentar
Mats Danielsen Skrevet 1. mai 2008 Del Skrevet 1. mai 2008 sha1() er sikrere enn md5 da det finnes utallige databaser over md5 "hash svar". Finnes noen for sha1() også men ikke så mange. Bruk sha1(sha1($pw),sha1($pw)) så går det nokk bra Lenke til kommentar
qualbeen Skrevet 1. mai 2008 Del Skrevet 1. mai 2008 jupp, som hash anbefales sha1 med salt. Hva saltet skal være er ikke godt å si - men det bør være ulikt for alle brukere (hvis vi tenker brukerpålogging). Samtidig er det lett å gjette at brukernavn blir brukt som salt, så kanskje det er bedre å sha1(strlen($username)) eller noe annet rart? Om folk klarer å gjette saltet sliter du. For som allerede nevt: det finnes plenty av "rainbow"-tables som løser passord med opp mot 30 tegns lengde. Til kryptering derimot bør du vel bruke SSL3 / TLS med offentlig og privat nøkkel. Men sertifikat-utlevering o.l. kan jeg ikke nok om - det eneste jeg vet er at god sikkerhet er relativt vanskelig å få til. Lenke til kommentar
Martin A. Skrevet 1. mai 2008 Del Skrevet 1. mai 2008 (endret) Saltet kan også være $salt = substr( sha1( microtime(true) ), 0, 10 ); Da får du et relativt unikt salt for hver bruker. Eller du kan dra den enda lengre $salt = ''; for ( $i = 0; $i < 10; $i++ ) { $num = rand(33, 126); if ( $num == '92' ) { $num = 93; } $salt .= chr( $num ); } echo $salt; Endret 1. mai 2008 av M4rTiN Lenke til kommentar
jorgis Skrevet 1. mai 2008 Del Skrevet 1. mai 2008 M4rTiN: Er da bare enklere å bruke uniqid() til å generere et enkelt og definitivt unikt salt. Lenke til kommentar
Martin A. Skrevet 1. mai 2008 Del Skrevet 1. mai 2008 Selvfølgelig. Jeg la bare ut noen flere eksempler på hvordan man kan lage et salt Lenke til kommentar
ve_gard Skrevet 1. mai 2008 Forfatter Del Skrevet 1. mai 2008 mange gode løsninger folk kommer med her ser jeg. Men bare et spørsmål som da her dukket opp.. Bør jeg da altså generere et passord til mine brukere som blir lagret som en sha1+salt verdi. Eller skal jeg la brukerens valgte passord være input'et innerst i saltet? Når det gjelder kryptering tenker jeg å kjøre over https protokollen etterhvert vil jeg tro. Er jo her snakk om hvor stor er sannsynligheten for at noen vil bryte seg inn på mitt system.. har jeg i det hele tatt noe som er av interesse for folk? Det med at jeg ønsker et sikkert system tror jeg nok går mer på min egen paranoia som ferdigutdannet informatikkstudent (om 3 uker). ...til slutt må jeg si meg helt enig i qualbeen.. Det finnes IKKE et 100% SIKKERT system, tiden knekker alle system... mvh Vegard Lenke til kommentar
Martin A. Skrevet 2. mai 2008 Del Skrevet 2. mai 2008 Du kan gjøre noe slikt $salt = den_methoden_du_velger(); $passhash = sha1( sha1( $salt ) . sha1( $userdefinedpassword ) ); mysql_query( "INSERT INTO members( salt,passhash ) VALUES( '$salt', '$passhash' )"; Når de da logger inn henter du først saltet basert på brukernavnet de skriver inn, så sjekker du om salt+passord er det samme som du har i databasen. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå