Premièrement, par la théorie mathématique - oui (bien qu'en pratique vous puissiez totalement ignorer cela pour les fonctions de hachage modernes et les nombres réalisables par calcul dans cet univers). Si le système ne stocke pas votre mot de passe en texte brut ou via un cryptage réversible, mais le hache (comme c'est la meilleure pratique), il existe une infinité de mots de passe potentiels qui généreront un hachage correspondant à votre hachage (en supposant un hachage cryptographique idéal fonction).
Par exemple, si votre mot de passe était password = '! 78ghA, NJ58 * # 3& *'
et qu'ils utilisaient un hachage sha256 salé (notez que cela devrait être renforcé avec de nombreux tours pour rendre la force brute plus difficile) avec un sel de 3 octets: d7 35 e6
alors votre hachage de mot de passe serait 4fe5bbb74a21fb6d20785ce7fce1cd51d6fc87c5a55f65d75e8f37096ed54a53
(en python, vous pouvez le calculer
>>> importation hashlib>>> sel = '\ XD7 \ x35 \ xe6'>>> password = '! 78ghA, NJ58 * # * 3&' >>> hashlib.sha256 (sel + mot de passe) .hexdigest ()' 4fe5bbb74a21fb6d20785ce7fce1cd51d6fc87c5a55f65d75e8f37096ed54a53 '
Notez que ce hachage est de 256 bits. Il n'y a donc que 2 256 ~ 10 77 hachages possibles. Si les fonctions de hachage fonctionnent bien et sélectionnent les hachages uniformément pour toutes les entrées possibles (c'est-à-dire que la fonction de hachage agit comme un oracle aléatoire), une fois que vous essayez de manière significative plus de 10 hachages 77 , certains hachages entreront en collision (prouvable par le principe du casier). Si vous avez essayé 10 hachages 80 , vous devriez vous attendre à trouver environ 1000 mots de passe correspondant à un hachage donné.
Cependant, 10 77 est un nombre extrêmement grand; c'est à peu près le nombre d'atomes dans l'univers observable. Ou si chaque atome du système solaire (~ 10 57 ) calculait chacun un hachage toutes les nanosecondes, il faudrait environ 3000 ans avant de calculer 10 77 hachages, donc ce n'est pas t quelque chose dont vous devez vous soucier dans la pratique.
(Si vous avez essayé 5 milliards de hachages par seconde pendant 100 ans et que vous aviez un mot de passe très fort, la chance de trouver au hasard un mot de passe différent correspondant à votre hachage 256 bits est de 1 sur 7,4 x 10 57 ; c'est comme les chances d'acheter 7 billets Powerball sur des semaines successives et de gagner le jackpot les 6 premières fois, puis de jouer une 7e fois et de faire correspondre 5 numéros (pas de powerball) pour gagner seulement 1 million de dollars.)
Certes, cela ne signifie pas en pratique que votre mot de passe est unique. J'ai personnellement rencontré un système VPN Cisco déployé dans la nature qui tronque un mot de passe aléatoire de 12 caractères en 8 caractères sans avertir l'utilisateur (j'ai d'abord découvert quand j'ai tapé trop vite et laissé un caractère et cela fonctionnait toujours; et puis fait des essais et des erreurs). Donc, tant que les 8 premiers caractères sont corrects, vous pouvez taper ce que vous voulez après cela et cela fonctionnera.
Ce n'est pas non plus un cas isolé; Par exemple, Microsoft avait l'habitude de tronquer silencieusement les mots de passe Windows Live ID à 16 caractères bien qu'il informe désormais l'utilisateur qu'il limite les mots de passe à 16 caractères:
Les mots de passe Windows Live ID étaient toujours limité à 16 caractères - tout caractère de mot de passe supplémentaire a été ignoré par le processus de connexion. Lorsque nous avons remplacé «Windows Live ID» par «Compte Microsoft», nous avons également mis à jour la page de connexion pour vous informer que seuls les 16 premiers caractères de votre mot de passe sont nécessaires. »
Il est également possible qu'un système d'authentification mal conçu supprime les caractères spéciaux du milieu de votre mot de passe. Mon ami a découvert que T-Mobile a fait cela en 2011 quand il a utilisé leur fonction "Mot de passe oublié" mal conçu qui lui a envoyé son mot de passe en texte clair qui, dans son cas, a supprimé les caractères spéciaux de son mot de passe.