Bonjour, relisez la description de la fonction crypt à http://fr.php.net/manual/fr/function.crypt.php string crypt ( string str [, string salt])
Noi je pencherais pour une limitation dans la base de donnée de $row['PASS'] à 32 char. Bonjour
il faut mieux lire, je la refais: dans le post original, l'auteur nous dit: if ( $row['PASS'] === substr( crypt($_POST['pass'],$row['PASS']),0,32) ) ) { // blabla } Regardez bien les paramètres de son appel à crypt, puis regardez la doc (que j'ai citée), et rendez-vous alors compte que ce n'est pas comme ça que l'on utilise la fonction crypt. Cordialement Pascal
Bonjour,
relisez la description de la fonction crypt à
http://fr.php.net/manual/fr/function.crypt.php
string crypt ( string str [, string salt])
Noi je pencherais pour une limitation dans la base de donnée de
$row['PASS'] à 32 char.
Bonjour
il faut mieux lire, je la refais:
dans le post original, l'auteur nous dit:
if ( $row['PASS'] === substr( crypt($_POST['pass'],$row['PASS']),0,32) ) )
{
// blabla
}
Regardez bien les paramètres de son appel à crypt,
puis regardez la doc (que j'ai citée),
et rendez-vous alors compte que ce n'est pas comme ça que l'on utilise la
fonction crypt.
Cordialement
Pascal
Bonjour, relisez la description de la fonction crypt à http://fr.php.net/manual/fr/function.crypt.php string crypt ( string str [, string salt])
Noi je pencherais pour une limitation dans la base de donnée de $row['PASS'] à 32 char. Bonjour
il faut mieux lire, je la refais: dans le post original, l'auteur nous dit: if ( $row['PASS'] === substr( crypt($_POST['pass'],$row['PASS']),0,32) ) ) { // blabla } Regardez bien les paramètres de son appel à crypt, puis regardez la doc (que j'ai citée), et rendez-vous alors compte que ce n'est pas comme ça que l'on utilise la fonction crypt. Cordialement Pascal
laurent sturm
Salut,
Je pense que tu fais une erreur de jugement. Voila un bout de code extrait du livre Php 5 Avancé, et c'est sur de ce bout de code que je me suis inspiré.
<extrait livre> La première phase est de chiffrer le mot de passe soumis par l'utilisateur lors de son inscription:
//Stockage du mot de passe initial $hachage_stocke = crypt($pass_initial)
(Pour ma part je le stocke dans un champ (varchar(32)) d'une table USER .)
Lorsque l'utilisateur revient et souhaite s'identifier, on rècupére le hash stocké. Cette ancienne chaîne crytée sert de paramétre pour chiffrer le nouveau mot de passe (afin que les deux chaine aléatoires soient les mêmes). Il suffit alors de comparer l'ancienne chaine cryptée et la nouvelle. Si elle sont identique, c'est que le mot de passe est bon:
//récupération du mot de passe fournie par l'utilisateur $pass_fourni = $_REQUEST['password']; //on vérifie que le mot de passe est correct if($hachage_stocke == crypt($pass_fourni, $hachage_stocke)) { echo "mot de passe valide"; }else{ echo "mot de passe invalide"; }
</extrait livre>
Mon probleme c'est que je suis obligé de coder: if($hachage_stocke == substr(crypt($pass_fourni, $hachage_stocke),0,32)) pour que mon code soit valide.
voila @+
Salut,
Je pense que tu fais une erreur de jugement.
Voila un bout de code extrait du livre Php 5 Avancé, et
c'est sur de ce bout de code que je me suis inspiré.
<extrait livre>
La première phase est de chiffrer le mot de passe soumis par l'utilisateur
lors de son inscription:
//Stockage du mot de passe initial
$hachage_stocke = crypt($pass_initial)
(Pour ma part je le stocke dans un champ (varchar(32)) d'une table USER .)
Lorsque l'utilisateur revient et souhaite s'identifier, on rècupére le hash
stocké.
Cette ancienne chaîne crytée sert de paramétre pour chiffrer le nouveau mot
de passe
(afin que les deux chaine aléatoires soient les mêmes). Il suffit alors de
comparer
l'ancienne chaine cryptée et la nouvelle. Si elle sont identique, c'est que
le mot de passe est bon:
//récupération du mot de passe fournie par l'utilisateur
$pass_fourni = $_REQUEST['password'];
//on vérifie que le mot de passe est correct
if($hachage_stocke == crypt($pass_fourni, $hachage_stocke))
{
echo "mot de passe valide";
}else{
echo "mot de passe invalide";
}
</extrait livre>
Mon probleme c'est que je suis obligé de coder:
if($hachage_stocke == substr(crypt($pass_fourni, $hachage_stocke),0,32))
pour que mon code soit valide.
Je pense que tu fais une erreur de jugement. Voila un bout de code extrait du livre Php 5 Avancé, et c'est sur de ce bout de code que je me suis inspiré.
<extrait livre> La première phase est de chiffrer le mot de passe soumis par l'utilisateur lors de son inscription:
//Stockage du mot de passe initial $hachage_stocke = crypt($pass_initial)
(Pour ma part je le stocke dans un champ (varchar(32)) d'une table USER .)
Lorsque l'utilisateur revient et souhaite s'identifier, on rècupére le hash stocké. Cette ancienne chaîne crytée sert de paramétre pour chiffrer le nouveau mot de passe (afin que les deux chaine aléatoires soient les mêmes). Il suffit alors de comparer l'ancienne chaine cryptée et la nouvelle. Si elle sont identique, c'est que le mot de passe est bon:
//récupération du mot de passe fournie par l'utilisateur $pass_fourni = $_REQUEST['password']; //on vérifie que le mot de passe est correct if($hachage_stocke == crypt($pass_fourni, $hachage_stocke)) { echo "mot de passe valide"; }else{ echo "mot de passe invalide"; }
</extrait livre>
Mon probleme c'est que je suis obligé de coder: if($hachage_stocke == substr(crypt($pass_fourni, $hachage_stocke),0,32)) pour que mon code soit valide.
voila @+
FAb
"laurent sturm" writes:
Salut,
<extrait livre>
[...]
(Pour ma part je le stocke dans un champ (varchar(32)) d'une table USER .)
Bizarre cette limitation à 32... Ça augmente la probabilité de collision sur les hashes.
//on vérifie que le mot de passe est correct if($hachage_stocke == crypt($pass_fourni, $hachage_stocke))
le hash stocké fait au max 32 char, pas celui qui est calculé.
[...]
Mon probleme c'est que je suis obligé de coder: if($hachage_stocke == substr(crypt($pass_fourni, $hachage_stocke),0,32))
Normal.
pour que mon code soit valide.
FAb
"laurent sturm" <laurent.sturm@free.fr> writes:
Salut,
<extrait livre>
[...]
(Pour ma part je le stocke dans un champ (varchar(32)) d'une table USER .)
Bizarre cette limitation à 32... Ça augmente la probabilité de collision sur les
hashes.
//on vérifie que le mot de passe est correct
if($hachage_stocke == crypt($pass_fourni, $hachage_stocke))
le hash stocké fait au max 32 char, pas celui qui est calculé.
[...]
Mon probleme c'est que je suis obligé de coder:
if($hachage_stocke == substr(crypt($pass_fourni, $hachage_stocke),0,32))