2015-12-26 2 views
2

Je suis nouveau sur le stockage de mot de passe hashes. Quelqu'un peut-il pointer de ce que je pourrais faire mal. J'utilise spécialement PHP, C ou non tout écart de C.Stockage des hachages à mot de passe en PHP

Stockage Hash:

  1. Recevez votre mot de passe
  2. Envoyer à password_hash() fonction avec un algorithme comme sha-512, et un facteur de coût.
  3. Peu coincé ici. Lors de l'itération, est-ce que j'utilise le hash de mot de passe reçu?
  4. Longueur avec pbkdf2 fonction de déviation de clé.
  5. Stocker dans la base de données.

Hash Récupération:

  1. Obtenez la tentative de l'utilisateur au mot de passe.
  2. Coincé ici aussi, mais je suppose que vous utilisez la fonction password_verify.
  3. Si une correspondance valide un autre refus.

Si quelqu'un pouvait poster une solution correcte qui serait très contraignante.

+0

Pouvez-vous s'il vous plaît signaler le code. Ensuite, les autres pourraient facilement comprendre votre problème. –

+0

$ password = $ _POST ['mot de passe']; $ hash = password_hash (7, 12, $ mot de passe); $ i = 0; alors $ i <12800) {$ hash = password_hash (7, 12, $ hash); } Vous ne savez pas comment implémenter la fonction hash_pbkdf2. –

Répondre

2

Pourquoi s'embêter avec les boucles while() si vous ne pouvez utiliser que les options intégrées?

$password = $_POST['password']; 
$hash = password_hash($password,PASSWORD_DEFAULT, array('cost' => 12)); 
echo $hash; 

C'est la bonne façon de procéder. Et pour vérifier le mot de passe tout ce que vous avez à faire est le suivant.

if(password_verify($password, $hash)){ 
    //valid password 
} 
+0

Je ne vois pas la boucle intégrée dans la fonction password_hash. Quel est le paramètre? –

+0

Le coût est une option exponentielle. 2^11 est la valeur par défaut si je me souviens correctement qui est plus que suffisant itérations en ce moment. Qui prend ~ 100ms – Crecket