Table de hachage

Fermé
zem - 2 mars 2010 à 02:02
 Kuku007 - 21 mars 2010 à 12:56
Bonsoir,
Est ce que quelqu'un peut il m'aider à comprendre ce que c 'est une Table de hachage . j'ai vraiment beaucoup de mal à me représenter cela. pourtant j'ai lu pas mal de définition. mais cela reste très abstrait et pas claire. j'ai l'impression que c 'est un mélange entre les tableaux et les listes chaînées. mes dès qu'on parle de clé et de fonctions de hachages. je me perd.
merci par avance pour votre aide.

3 réponses

Kuku007 Messages postés 183 Date d'inscription dimanche 28 février 2010 Statut Membre Dernière intervention 7 septembre 2011 23
2 mars 2010 à 02:18
Salut, les fonctions de hachages sont couramment utilisées en cryptographie ou bien en authentification.
Ces fonctions sont généralement des fonctions à sens unique, cad dont il est très difficile de déterminer la valeur d'entrée de la fonction à partir du résultat de celle-ci.

Mathématiquement ça donne un truc du style :
- il est facile de calculer f(x) avec un x donné mais il est très dur à partir de f(x) de calculer x.

Atchoum !

Ces fonctions sont particulièrement utilisées pour les signatures numériques ou encore l'authentification via mot de passe, etc etc.

En effet la caractéristique première de ces fonctions est de pouvoir calculer à partir d'un volume de données d'entrée variable, une empreinte significative et unique de taille fixe sous forme de "hash".

Bref concrètement prenons un exemple : l'authentification sur un système Linux standard.
Le système sauvegarde le haché des mots de passe dans un fichier public et en lecture seule.
Ainsi lorsque l'utilisateur A entre son mot de passe, il est appliqué à une fonction de hachage qui calcule son empreinte. Cette empreinte est ensuite comparée à l'empreinte sauvegardée sur le système. Si les 2 empreintes sont égales, c'est que l'utilisateur A a bien saisie le bon mot de passe.

Cela évite de sauvegarder les mots de passe en clair et d'autant plus qu'il est très difficile de retrouver les mots de passe à partir des hachés.

Venons en à la table de hachage.

Cela consiste en fait à associer une clé à un élément d'un tableau.
Typiquement la clé est "presque" l'indice du tableau (genre T[clé] renvoie élément)
Seulement voilà, les tables de hachages sont des tableaux qui ne sont pas ordonnés par des indices comme les tableaux classiques. En d'autres termes si tu ne connais pas l'indice exact du tableau contenant l'élément désiré, il n'est pas possible d'y accéder !

En pratique ces clés sont passées dans des fonctions de hachage afin de déterminer l'indice réel dans le tableau. En maths ça donne quelque chose du genre :

f_hash (clé) => i
Ensuite tu peux faire T[i] et récupérer l'élément

C'est une manière de vérifier que l'utilisateur qui souhaite accéder à l'élément connait effectivement la clé lui donnant cet accès.

J'espère avoir été compréhensible ;-)
4
zemzm Messages postés 4 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 21 mars 2010
21 mars 2010 à 01:31
bonsoir Kuku007,
je tiens à te remercier d'avoir pris de ton temps pour me répondre. et désolé de te répondre si tard.
donc si j'ai bien compris . les tables de hachages sont des tableaux dont les indices ne sont pas dans l'ordre. et on ne peut pas récupère une valeur particulière si on ne connait pas l'indice de la case où se trouve la valeur. et donc pour retrouver cette clé ou indice, on utilise une fonction de hachage. est ce bien cela.?
après la question que je me pose, est ce que à la base les indices de ce tableau sont triés? utilise t on une fonction pour désordonner les indices. ou pas du tout. est ce que une table de hachage est une structure de donnée est un tableau avec des indice désordonnée ou c 'est carment une autre notion. est ce que on déclare une table de hachage de la même manière qu'un tableau?
merci d'avance pour ta réponse.
bon week end.
0
Salut zem !
Euh d'abord sur le principe, oui les tables de hachages consistent en un tableau dont la seule manière d'accéder aux éléments (via les indices) est de saisir une clé qui est appliquée à une fonction de hachage afin de retrouver l'indice dans la table.

Alors quand à savoir si la table est triée ou non je ne sais pas. Mais je dirais que limite on s'en fou :D
Même triée; la seule manière d'accéder à un élément de la table est par la saisie d'une clé valide. Si l'utilisateur saisit une clé non valide la fonction de hachage rendra une valeur toute pourrie et engendrera un refus d'accès ou une erreur.

Ensuite le type de structure employée ? Je ne sais pas, certainement une table.
Pour la déclaration, bah je ne sais pas, dépend du langage utilisé ! Genre en java c'est une instanciation classique il me semble (je ne suis pas utilisateur de ces fonctions)
0