Probleme avec MD5

Fermé
bloomingdals - Modifié par bloomingdals le 30/05/2013 à 17:38
[Dal] Messages postés 6200 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 7 janvier 2025 - 30 mai 2013 à 18:28
Bonjour,

j'ai 2 scripts l'un pour l'inscription, l'autre pour l'authentification.
quand j'éxécute mon fichier php d'inscription, il focntionne très bien et mon mot de passé hashé avec md5 est enregistré correctement dans ma table sql.
mais quand je veux me connecter avec mon compte, je remarque que le mot de passe que j'ai saisi et celui enregistré ont deux hash différents pourtant c'est le même mot de passe.

j'ai fais un echo des deux mots de passe et j'ai remarqué que celui que j'ai saisi possède deux caractère en plus à la fin.

voila mon code pour la connexion:
$sql = "select Password from Authentication where Username='".$_POST['username']."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);

if($data['Password'] != md5($_POST['password'])) {
echo $data['Password']; 
echo md5($_POST['password']);
...

merci
A voir également:

1 réponse

[Dal] Messages postés 6200 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 7 janvier 2025 1 097
Modifié par [Dal] le 30/05/2013 à 18:36
Salut bloomingdals,

Sans plus de détails sur "l'autre mot de passe" et la façon dont il est généré, on ne peut que faire des hypothèses.

Si c'est exactement le même mot de passe, que c'est md5 qui est utilisé, et qu'il n'est pas ajouté de grain de sel à ce qui est hashé par md5, le résultat devrait être le même (ou alors la /les implémentations de md5 utilisées peuvent être erronées).

Peut-être l'autre mot de passe est-il hashé par md5 avec un grain de sel.

On peut ajouter un grain de sel manuellement à ce qui est passé à md5, pour éviter les "rainbow tables".

$pass = 'secret';
$salt = 'Y81.35,005jEk2S054m8p1JI7{"543544bI8ao@66l4d56qN15ftN3OTiv';
$salted_md5_hash = md5($salt.$pass);
$plain_less_secure_md5_hash = md5($pass);

mais tant qu'à faire, c'est mieux sans doutes mieux d'utiliser les fonctions Php crypt ou hash (https://www.php.net/manual/fr/faq.passwords.php#faq.passwords.fasthash)


Dal
0