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