102 votes

Peuvent générer des deux chaînes différentes le même code de hachage MD5 ?

Pour chacun de nos actifs binaires, nous générons un hachage MD5. Ceci est utilisé pour vérifier si un certain bien binaire est déjà dans notre application. Mais est-il possible que deux actifs binaires différents génèrent le même MD5 as. Il est donc possible que les deux chaînes différentes génèrent le même hachage MD5 ?

102voto

intgr Points 9041

Pour un ensemble de même des milliards d'actifs, les chances de collisions aléatoires sont négligeables -- rien de ce que vous devriez vous inquiéter. Considérant le paradoxe d'anniversaire, étant donné un ensemble de 2^64 (ou 18,446,744,073,709,551,616) des actifs, la probabilité d' un seul MD5 collision à l'intérieur de cet ensemble est de 50%. À cette échelle, vous auriez probablement battre Google en termes de capacité de stockage.

Cependant, parce que la fonction de hashage MD5 a été cassée (elle est vulnérable à une collision d'attaque), toute personne déterminée peut produire 2 collision actifs dans une affaire de secondes, la valeur de la puissance du CPU. Donc, si vous voulez utiliser l'algorithme MD5, assurez-vous qu'un attaquant ne serait pas compromettre la sécurité de votre application!

Aussi, envisager les conséquences si un attaquant de forger une collision à un actif existant dans votre base de données. Il n'y a pas de telles attaques connues (preimage attaques) contre MD5 (2011), il pourrait devenir possible par l'extension de la recherche actuelle sur les attaques par collision.

Si celles-ci s'avèrent être un problème, je vous suggère de regarder le SHA-2 séries de fonctions de hachage (SHA-256, SHA-384 et SHA-512). L'inconvénient est qu'il est légèrement plus lente et plus hachage de sortie.

46voto

Konrad Rudolph Points 231505

MD5 est une fonction de hachage – alors oui, deux chaînes différentes peuvent absolument générer des codes MD5 collision.

En particulier, Notez que les codes MD5 ont une longueur fixe alors le nombre possible des codes MD5 est limité. Le nombre de chaînes (de n’importe quelle longueur), cependant, est sans aucun doute illimité donc il s’ensuit logiquement qu’il faut des collisions .

13voto

sharptooth Points 93379

Oui, c’est possible. En fait, il s’agit d’un problème d’anniversaire. Cependant, la probabilité de deux chaînes choisis au hasard, ayant le même hachage MD5 est très faible.

Voir cette cette questions et pour obtenir des exemples.

13voto

Tony Andrews Points 67363

Oui, bien sûr : hachages MD5 ont une longueur finie, mais il y a un nombre infini de chaînes de caractères possibles qui peuvent être hachées MD5.

6voto

Rubens Farias Points 33357

Des exemples de collisions MD5 : MD5 Collision démo et Collisions MD5, Visualised

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X