Bonjour,
Par le code ci-dessous, je désire que la fonction parcourt un fichier texte contenant des password_hash, afin de vérifier si le mot de passe proposé par l'utilisateur est bien présent.
Curieusement, la fonction ne reconnaît le mot de passe que si ce dernier se trouve en dernière position dans la liste du fichier.
Si le mot de passe est "rasmuslerdorf", la fonction le reconnaîtra dans le hash $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a lorsque celui-ci est en dernière ligne. Sinon rien ...
Fichier texte contenant les hash (le mot de passe situé en fin de liste est reconnu) :
Fichier texte contenant les hash (le mot de passe situé en milieu de liste n'est pas reconnu) :$2y$10$rrrtKAkx9CWeL0GKI5.NeuF28PpFtZB.0mKpM1C561W0nedTA56DO
$2y$10$.02/L07wfH6XsyVngSQhZvNBwlwfJn27JLnn0ba9yLXtert5lW1tG
$2y$10$7UWbOWX10mo3cufvyuiQlmmmcxXyF7o12pm4UjulZAtrwA/y/5uE2
$2y$10$rrrtKAkx9CWeL0GKI5.NeuF28PpFtZB.0mKpM1C561W0nedTA56DO
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
La fonction :$2y$10$rrrtKAkx9CWeL0GKI5.NeuF28PpFtZB.0mKpM1C561W0nedTA56DO
$2y$10$.02/L07wfH6XsyVngSQhZvNBwlwfJn27JLnn0ba9yLXtert5lW1tG
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
$2y$10$7UWbOWX10mo3cufvyuiQlmmmcxXyF7o12pm4UjulZAtrwA/y/5uE2
$2y$10$rrrtKAkx9CWeL0GKI5.NeuF28PpFtZB.0mKpM1C561W0nedTA56DO
Je vous remercie de m'éclairer sur ce phénomène.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 $ok = 0; $mdp = "rasmuslerdorf"; $handle = fopen("fichier.txt", "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle); if (password_verify($mdp, $buffer)) { echo "<br/>Mot de passe reconnu à la ligne : ".$i." ".$buffer; $ok = 1; break; } else { echo "<br/>Mot de passe NON reconnu à la ligne : ".$i." ".$buffer; } } fclose($handle); } if ($ok == 1) { echo "Le mot de passe a bien été reconnu."; } else { echo "Le mot de passe N'a PAS été reconnu."; } ?>
Partager