sha512 vs password_hash

xdex

Medlem
Jeg ville brukt scrypt, eller bcrypt hvis du ikke kan førstnevnte. Dersom du ikke kan bruke noen av delene, ville jeg brukt PBKDF2 med SHA2 hash. Dokumentasjon vedrørende disse finnes det mye av på google, man skal uansett aldri bruke md5/sha1 (ikke relevant, men nevner det likevel), og password_hash fungerer kun på "nyere" versjoner av php (5.5?) eller noe sånt.

http://xkcd.com/936/
 

adeneo

Medlem
Bruk password_hash og password_verify dersom du har en versjon av PHP som støtter dette, de gir deg optimal sikkerhet og er enkle å bruke.

De nye passord funksjonene genererer sikre salts internt og lagrer de sammen med hashen, samtidig som det benyttes crypt() til å hashe med, som bruker bcrypt som standard og er regnet som en av de sikreste algoritmene nå.

Alt dette er pakket pent inn i passord funksjonene slik at det er enkelt å bruke de.
Algoritmene som brukes til hashingen vil oppdateres sømløst uten at du merker det etterhvert som nye bedre krypteringer blir tilgjengelig i senere versjoner av PHP, slik at du vil alltid bruke best mulig salt og kryptering uten at du trenger å tenke på det.

Bcrypt genererer hasher som er 60 tegn, men ettersom algoritmen kan endres i senere versjoner av PHP må du huske på å ha litt mer plass i databasen, det anbefales gjerne varchar 255 eller lignende.

Dette betyr selvfølgelig også at du ikke bør generere egne salts, men la password_hash gjøre det for deg, jeg mener dev_urandom blir brukt til saltingen.

Du lager en hash med salt og alt inkludert så enkelt som
PHP:
$pass = password_hash("passord");

og det eneste du trenger å lagre er den hashen, deretter kan du sjekke passord opp mot den
PHP:
if ( password_verify("passord", $pass) ) { ... // true
 
Topp