
Envoyé par
pmithrandir
Bon, j'ai toujours pas compris...
En gros, la valeur renvoie 0 quand faux, ou un nombre entre 1 et plusieurs millions selon l'erreur du mot de passe et le degré de différence.
valeur de retour 0 : le mot de passe est le bon
valeur de retour != 0 : le mot de passe n'est pas le bon.
Maintenant, regardons de plus pres ce different de 0.

Envoyé par
pmithrandir
si on essaye toujours le même mot de passe, ca veut dire que l'on devrait avoir les même valeur, donc la même comparaison, donc le même modulo... donc finalement pas tant de problèmes que cela non?
Non, pas si c'est bien fait, ce qui est le cas. Tu ne hash pas le mot de passe, mais un couple mot de passe + grain de sel, donc le hash est different a chaque fois.
Bien, nous avons donc un hash sur 32 bits, mais une comparaison qui va tronquer ca sur un char, c'est a dire sur 8 bits. Il suffit donc que les 8 bits de comparaison soient les memes pour que l'acces soit donne.
Exemple foireux juste pour comprendre :
hash qui va bien :
00000000 11111111 01010101 00110011
hash qui ne devrait pas aller, mais qui va bien si on ne regarde que les 8 premiers ou les 8 derniers bits :
00000000 01010101 11111111 00110011
Dans ce cas, la comparaison tronquee retourne 0, alors que la comparaison sur les 32 bits ne retourne pas 0.
Partager