Først MD5'er du passwordet en gang.
Og så MD5'er du det allerede MD5'ede igen.
Det skal ikke give det originale password.
Hvis du vil validere et login så MD5'er du det password brugeren har indtastet med det allerede MD5'ede password i databasen.
Hej, tak for svar. Ja - jeg tjekker ved login - om md5 af det indtastede svarer til det i databasen.
Problemet er, når brugeren vil ændre sit password i en form, der eks. består af en række ting (køn, alder, og så password):
<input type="password" name="form_password" value="<?php echo $md5_salted_password_fra_database; ?>">
Kører man så en salt på det én gang til, eller?
Hvis bruger vil ændre password så:
- checker du det gamle password først
- derefter hasher du det nye password helt på samme måde som da han blev oprindeligt oprettet og gemmer det hashede password
- det er optional om du vil bruge samme salt eller generere et nyt
Ikke fordi det har den helt store betydning, når man husker at salte sin hash, så vil jeg anbefale at du ikke bruger MD5, der er meget sårbar overfor collisions, og benytter dig af en SHA algoritme istedet.
Se mere om hvordan her:
http://dk2.php.net/ (...)http://dk2.php.net/ (...)http://dk2.php.net/ (...)
Generelt er MD5 forældet, så det ville være godt at bruge SHA-256 i stedet for.
hej... ah ja...
problemet var, at jeg viste det gamle password i input-feltet:
<input type="password" name="form_password" value="<?php echo $md5_salted_password_fra_database; ?>">
Dvs siden salter et allerede saltet password, så hvis man ikke ændrede password'et i forumularen (men eks. kun ens email-adresse) - så ændrede siden alligevel ens password.
Hvis value = "" i password-feltet er der så ingen problem.
Håber jeg har fattet det rigtigt.
Tak for hjælp. Svar gerne for point!