2015-09-03 1 views
-2

Toutes mes excuses pour la question simple mais je suis encore à apprendre php/mysqlSHA512 Hashage MYSQL/PHP

je tente de hachage des mots de passe sur l'enregistrement, ce qui fonctionne, mais une fois que le hachage est terminée, l'utilisateur ne peut pas se connecter avec leur mot de passe. Voici un petit extrait de mes variables

$password = hash('sha512',$_POST['password']); 
    $confirmPassword = hash('sha512',$_POST['confirmPassword']); 

-> Ainsi, le mot de passe est mis en correspondance avec confirmation mot de passe et puis ils sont comparés en utilisant Javascript et PHP, si elles correspondent aux données est insérée dans la base de données. Alors pourquoi ne permet-il pas à l'utilisateur de se connecter?

Actuellement dans ma base de données, la colonne de mon mot de passe est CHAR (128) si cela vous aide?

+0

Fondamentalement, vous nous demandez de déboguer votre code, qui n'est même pas présent - je veux dire le code qui fait la partie de l'enregistrement. – lukelazarovic

Répondre

1

La taille de votre colonne de mot de passe est trop small.Do simple:

echo sizeof(hash('sha512',$_POST['confirmPassword']));

et obtenir la bonne taille de votre colonne de base de données.

+0

Merci, il semble que j'ai fait une erreur négligente :) – Krono

+0

mise à jour: je l'ai fonctionné, merci! – Krono

1

Il est dangereux de hacher les mots de passe de cette façon avec un seul SHA512 non salé. PHP propose des fonctions dédiées password_hash() et password_verify() faire correctement ce travail:

// Hash a new password for storing in the database. 
// The function automatically generates a cryptographically safe salt. 
$hashToStoreInDb = password_hash($_POST['password'], PASSWORD_DEFAULT); 

// Check if the hash of the entered login password, matches the stored hash. 
// The salt and the cost factor will be extracted from $existingHashFromDb. 
$isPasswordCorrect = password_verify($_POST['password'], $existingHashFromDb); 

Pour vérifier si le mot de passe et sa confirmation sont égaux, vous devez les comparer directement (texte brut), avant le hachage calculer.

Il est recommandé d'utiliser un champ de base de données de type varchar (255) pour stocker ce hachage, pour être à l'épreuve du futur.