Bonjour ,
je repète:
Il n'existe pas de fonction permettant de retrouver à partir d'un hash le message en clair
ça ne pose aucun problème de fonctionnement:
<u>Création de compte</u>:
L'utilisateur choisit un mot de passe mdp:
Tu stockes en base le hash que j'appele mdp_hash
<u>Connexion :</u>
L'utilisateur rentre son mot de passe pwd. Pour vérifier si le mot de passe est correct, tu compares le hash md5 du mot de passe entrée avec celui stocké en base.
<u>Changement de mot de passe :</u>
L'utilisateur clique sur "mot de passe oublié" ,
Au choix, tu généres un mot de passe aleatoire, tu lui envois par mail en clair , tu stockes le hash en base comme nouveau mot de passe.
Il se connecte avec celui-là, il peut effectuer le changement de mot de passe.
ou alors tu généres un tocken de securité, tu lui envois un lien par mail avec ce token , valable une seule fois. La page sur laquelle pointe le lien le connecte directement et lui permet de définir un nouveau mot de passe.
Quand tu dis "pourtant j'ai pas le choix", tu attends quoi ? On va pas te donner quelque chose qui n'existe pas et qui est IMPOSSIBLE.
Pourquoi impossible:
Le hash est de longueur fixe , toujours la même. L'ensemble de tous les hash possibles est donc fini . Il en existe un nombre fini, certes très éleves mais fini !
En revanche , le nombre de mot de passe possible est lui infini (bon là on pourrait dire "non on va pas y mettre 200 000 caracteres, mais le hash peut servir aussi à calculer l emprunte d'un fichier de taille quelconque donc par exemple un fichier de 200go si on veut)
En résumé, il y a beaucoup plus d'entrée possible à la fonction de hashage que de sortie.
Donc le hash agit sur n'importe quel message d'entrée (en faite sur n'importe quel série de bits) et fournit en sortie un message de taille fixe.
Hash : A (taille quelconque) ---> B(taille fixe)
La taille de A est donc bien plus grande que B .
ça veut dire deux choses:
1) On perd de l'information
2) On aura plusieurs messages qui donnent le même hash (principe des tiroirs, on a je sais pas 200 000 choses à ranger dans 200 tiroirs... forcement y'en a qui vont se retrouver dans le même tiroir)
Comment alors retrouver le message d entrée grâce à la sortie alors que y'en a plusieurs??
C'est impossible...
Et là, je sens la question "Mais alors c'est pas sécurisé, plusieurs message donnent le meme hash" .
Oui c'est vrai plusieurs messages donnent effectivement le même hash. Sauf que les fonctions de hashage sont résistantes aux collisions (et à la seconde préimage ça c plus technique j'en parle pas) , ça veut dire quoi "résistante aux collisions":
ça veut dire qu'il est quasi impossible de construire deux messages a et b qui donneront le même hash.
En conclusion: Le hash est à sens unique.. une fois appliquée on ne peut pas revenir en arrière.
Cordialement
Antho