MD5

linusien Messages postés 236 Statut Membre -  
linusien Messages postés 236 Statut Membre -
Bonjour,

a tous ma question est la suivante :

comment un site comme md5encrytion arrive a avoir une tres grande base de donées de hash md5 sans que le site soit long a donner une reponse?

merci de vos reponses.

A voir également:

3 réponses

Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
ben justement, les bases de données sont optimisées pour accéder à des éléments rapidement entre autres grace à des hash, et des tables de hachage.

https://fr.wikipedia.org/wiki/Table_de_hachage

en gros, la base de donnée n'a qu'à tester au pire une poignée de valeurs avant de tomber sur la bonne, plus de calculer un hash avant (ce qui est vite fait)

on arrive à accéder aux données de la table en temps asymptotiquement constant ( O(1) )
1
linusien Messages postés 236 Statut Membre 6
 
merci de ta reponse
0
linusien Messages postés 236 Statut Membre 6
 
et comment hasher une table?
0
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
on ne "hash" pas une table, on utilise une table de hachage pour placer les éléments dans la table.

par exemple, imagine que tu as ces informations à entrer dans ta table :

albert, john, toto, suzanne et encore cent mille autres noms.

et ta table, imaginons, à de l'espace pour mettre 1 million d'élément.

il y a la case 1, la case 2, la case 3, etc.... jusqu'à la case 1'000'000

tu as cette possibilité par exemple, qui est mauvaise :

mettre les noms dans ta table à la suite ,séquentiellement, selon l'ordre d'arrivée :

dans la case 1 il y a albert, dans la case 2 on met john, dans la case 3 on met toto etc....


maintenant imagine on désire retrouver un nom dans la table (car on y a mis des adresses avec, et on veux retrouver l'adresse de qq'un).

a priori, on ne sais pas à l'avance où on a mis les noms. il faut regarder chaque case jusqu'à ce qu'on le trouve.

si c'est john ou albert, on va vite tomber dessus. mais si on cherche un nom qui a été mis en 100'000ème position, la base de donnée dois chercher dans 100'000 cases avant de trouver le nom et l'adresse !

c'est très mauvais.


à la place, on va placer les noms selon le résultat d'une fonction de hachage (peu importe la fonction, mais certaines sont mieux, voir par exemple l'article de wikipedi et les très nombreuses ressources disponibles sur le net à ce sujet)


par exemple, john est hashé en 318'235 : alors on va mettre john, au moment de l'entrer dans la table, à la 318'235ème position.

lorsqu'on cherche john dans la table, on calcule son hash, c'est 318'235, alors la base va directmeent chercher à la case 318'235


il peut arriver que plusieurs noms, plusieurs données, donnent le même hachage. (on appelle ça une collision), dans ce cas il y a plusieurs manières de se débrouiller, mais s'il n'y a pas beaucoup de collision, ça ne fait que retarder la recherche de quelques essais (à compter sur les doigts de la main, donc bien mieux que d'essayer 100'000 valeurs !)
0
linusien Messages postés 236 Statut Membre 6
 
bonjour a tous comment creer une table de hachage?
0