Hash wachtwoord met PHP.

<?php
echo password_hash(‘ditismijngeheimewachtwoord‘, PASSWORD_DEFAULT);

Dan maakt PHP hiervan:
$2y$10$fEb3iBECEd5j14q3zS8P9.Pz6DXejc3ECUN0qWHt2.Ek8ZsKocGpm

namevalue
usernameJohnDoe
password$2y$10$fEb3iBECEd5j14q3zS8P9.Pz6DXejc3ECUN0qWHt2.Ek8ZsKocGpm


Wat gebeurt er bij het inloggen?

Gebruiker vult in:
Gebruikersnaam: JohnDoe
Wachtwoord: ditismijngeheimewachtwoord

Het script leest uit de database:
JohnDoe
$2y$10$fEb3iBECEd5j14q3zS8P9.Pz6DXejc3ECUN0qWHt2.Ek8ZsKocGpm

Vervolgens doet PHP:

<?php
password_verify(‘ditismijngeheimewachtwoord‘,
‘$2y$10$fEb3iBECEd5j14q3zS8P9.Pz6DXejc3ECUN0qWHt2.Ek8ZsKocGpm’
);

PHP berekent zelf opnieuw de hash en controleert:
Komt dit wachtwoord, ditismijngeheimewachtwoord overeen met deze hash:
$2y$10$fEb3iBECEd5j14q3zS8P9.Pz6DXejc3ECUN0qWHt2.Ek8ZsKocGpm

Antwoord?
JA, goedgekeurd.

Je vult (dus) niet de hash in bij het inloggen
maar het echte wachtwoord, in dit geval: ditismijngeheimewachtwoord

Telkens als je deze code in PHP uitvoert:
<?php
echo password_hash(‘ditismijngeheimewachtwoord‘, PASSWORD_DEFAULT);

en je drukt daarna op F5 (F5 vernieuwt (ververst) de actieve webpagina in vrijwel alle internetbrowsers), dan verandert weliswaar de ‘hash’ (de lange tekenreeks) telkens maar dat komt door de zogenaamde ‘salt’. In de deze PHP-code zit de salt automatisch ingebouwd in de functie password_hash(). De salt wordt dus onderdeel van het eindresultaat.

Omdat de salt in de hash zelf zit opgeslagen, weet de functie password_verify() later precies welke salt er gebruikt is om het wachtwoord te controleren.

Leave a Reply

Your email address will not be published. Required fields are marked *