Le but de cet exercice va être de modifier le programme de la carte émettrice, afin que le mot de passe ne soit plus envoyé en clair, mais que seule son empreinte (hash) soit échangée et sauvegardée. Le coffre-fort devra ensuite comparer le mot de passe haché reçu par radio à l’empreinte stockée : s’ils correspondent, il ouvre le verrou.
La première étape de l'exercice consiste à implémenter une fonction de hachage. Cette fonction doit prendre en paramètre le message que l'on veut hacher (ici les mots de passe), et renvoyer une autre chaîne de caractères, le hash (empreinte) du message.

Cette fonction va donc devoir transformer le message d'entrée en empreinte, tout en respectant les aspects vus plus haut :
- Choisir une graine de départ : On initialise une variable h (la future empreinte), avec une valeur non nulle, appelée graine (seed). En effet, si on commençait à zéro, certains calculs seraient trop prévisibles. La graine sert donc à initialiser le mélange et à rendre le résultat moins prévisible.
- Convertir chaque caractère en nombre : Pour traiter le message, on transforme chaque lettre en nombre unique. Pour cela, on utilise la fonction Python ord, qui donne l'ordinal de la lettre, c'est-à-dire un numéro unique pour chaque caractère (son code dans la table utilisée par l’ordinateur). Pour utiliser la fonction ord, il faut, dans la section Python de l’interface, encapsuler la lettre à convertir en nombre par ord : par exemple : ord(c), avec c le caractère que l’on veut convertir.
- Mélanger avec addition : On ajoute la valeur numérique de la lettre au hash courant. Cela permet d'injecter l'information de la lettre dans le calcul, en modifiant h.
- Diffuser avec multiplication : On multiplie le résultat par un nombre fixe, de préférence grand et "bizarre" (un nombre premier par exemple : 37). Cette multiplication permet de mieux diffuser le hash, c'est-à-dire qu'un petit changement dans le message va produire une variation plus importante dans le hash. Il s'agit d'une première étape de l'effet avalanche.
- Réduire avec modulo : On applique un modulo (le reste de la division euclidienne) pour limiter la taille du résultat. Par exemple, effectuer un modulo 100000000 permet de garder uniquement 8 chiffres. Cette étape est cruciale, car elle permet de perdre de l'information, et ainsi de rendre beaucoup plus difficile l'inversion du hash vers le message d'origine.

Si tu es bloqué :
- Vérifie que tu appelles exactement la même fonction de hachage pour le mot de passe enregistré dans le coffre-fort et pour le mot de passe reçu par radio.
- Assure-toi que tu compares bien hash_reçu avec hash_stocké, et non un hash avec le mot de passe en clair