2014-07-21 4 views
1

Je suis en train de comprendre l'utilisation correcte de password_hash je le script suivant ci-dessousutilisation correcte de password_hash

<?php 
    $password = "test3"; 
    $hashAndSalt = password_hash($password, PASSWORD_BCRYPT); 

    echo $hashAndSalt; 
?> 

pour autant que je sais que cela est censé créer un sel trop?

Lorsque je lance le script, le début du hachage commence par "$ 2y $ 10 $", le reste change toujours à chaque passage.

$2y$10$.YHHLeFYcQoE6c//vl587uIFTOljmpmuDnSA0w0dxo1Rrpvi5zM9m <- run one 
$2y$10$b6n3chpTQk1X7c0OdPp0ceZmw3GvZFsLx9FHq9RnYaJgbld915oYG <- run two 
$2y$10$AGffB7R1rTko8UmS1m6wT.ybG78.CkwrxqoRteNMeRPXexpSJW5iO <- run three 

Est-ce censé fonctionner comme ceci? est-ce la bonne façon de stocker le mot de passe dans la base de données?

+0

le hachage devient une partie de la chaîne cryptée. Je ne peux pas me souvenir exactement où est le crachat, mais si 'h' est le hachage, et' c' est le crypté pw, alors vos chaînes sont un format '$ 2y $ 10 $ hhhhhhhccccccc' correct. –

+0

En plus du commentaire de Marc ci-dessus, le '2y' entre les deux premiers signes' $ 'identifie l'algorithme utilisé, tandis que le' 10' entre les deux deuxièmes '$' signes est le facteur 'cost' –

Répondre

3
$2y$10$.YHHLeFYcQoE6c//vl587uIFTOljmpmuDnSA0w0dxo1Rrpvi5zM9m 
| | |     |        | 
| | |     |        | 
| | |     |---------------------------------Hashed Password 
| | |----------------------Salt 
| |----Cost 
----Algorithm 

Le hachage contient toutes les informations nécessaires pour voir si le mot de passe correspond au hachage d'une chaîne donnée. Vous connaissez l'algorithme avec lequel il a été haché, le sel et ce qu'il contient. Donc, tout ce que vous avez à faire est de fournir une chaîne, passez-la par le même algorithme avec le même sel et le même coût, et elle sera égale ou non au hachage. Donc, pour répondre à votre question, oui, c'est supposé fonctionner comme ça. Le salt change à chaque fois, ce qui signifie que le mot de passe hashé change à chaque fois, mais vous pouvez toujours vérifier si un mot de passe hashed a le même mot de passe hashé, car le hash contient le salt.

+0

Voir [this] (http://stackoverflow.com/questions/6832445/how-can-bcrypt-have-built-in-salts) pour plus d'informations sur Bcrypt. –