61 votes

Un hachage cryptographique ou une somme de contrôle identique pour deux fichiers signifie-t-il qu'ils sont identiques ?

J'ai 2 documents excel et je veux vérifier s'ils sont exactement les mêmes, à part le nom du fichier.

Par exemple, les fichiers s'appellent fileone.xls y filetwo.xls . En dehors des noms de fichiers, leurs contenus sont supposés être identiques mais c'est ce que je veux vérifier.

J'ai cherché des moyens de revoir cela et sans installer un tas de plugins. Il ne semble pas y avoir de moyen direct.

J'ai essayé de générer des hachages MD5 pour les deux fichiers. Lorsque les hachages sont identiques, cela signifie-t-il que le contenu des fichiers est identique à l'identique ?

5voto

styrofoam fly Points 1816

Les hachages tels que MD5 ou SHA ont une longueur fixe, disons 300 caractères alphanumériques (en réalité, ils sont plus courts et n'utilisent pas la totalité des caractères alphanumériques).

Disons que les fichiers sont constitués de caractères alphanumériques et qu'ils peuvent atteindre une taille de 2 Go.

Vous pouvez facilement constater qu'il y a beaucoup plus de fichiers (d'une taille allant jusqu'à 2 Go) que de valeurs de hachage possibles. Le principe du pigeonhole dit que certains fichiers (différents) doivent avoir les mêmes valeurs de hachage.

Aussi, comme démontré sur shattered.io 1 vous pouvez avoir deux fichiers différents : shattered.io/static/shattered-1.pdf et shattered.io/static/shattered-2.pdf qui ont la même valeur de hachage SHA-1 tout en étant complètement différents.

1 SHA1 est un algorithme de hachage plus puissant que md5.

5voto

user441365 Points 1031

J'ai 2 documents excel et je veux vérifier s'ils sont exactement les mêmes, à part le nom du fichier.

D'un point de vue pratique, comparer directement les fichiers pour savoir s'ils sont différents sera plus rapide que de calculer un hachage pour chaque fichier et de comparer ensuite ce hachage.

Pour calculer les hachages, vous devez lire l'intégralité du contenu des deux fichiers.

Pour déterminer s'ils sont identiques par une comparaison directe, il suffit de lire le contenu des deux fichiers jusqu'à ce qu'ils ne correspondent plus. Dès que vous trouvez une différence, vous savez que les fichiers ne sont pas identiques et vous n'avez pas besoin de lire d'autres données de l'un ou l'autre fichier.

Et avant de faire l'un ou l'autre, vous pouvez simplement comparer les tailles des deux fichiers. Si les tailles diffèrent, le contenu ne peut pas être le même.

4voto

mckenzm Points 817

NON. Des valeurs différentes garantissent que les fichiers sont différents. Des valeurs identiques ne garantissent pas que les fichiers sont les mêmes. Il est relativement facile de trouver des exemples utilisant le CRC16.

Dans l'équilibre des probabilités, avec les systèmes de hachage contemporains, ils sont identiques.

3voto

David Rice Points 131

Votre question est cependant inversée - supposons que le hachage signifie qu'ils ont les mêmes données (ce qui n'est pas garanti à 100%, mais est suffisamment bon pour une vie entière de comparaison de fichiers toutes les secondes pour ne pas rencontrer de collision). Il ne s'ensuit pas nécessairement qu'avoir les mêmes données signifie qu'ils auront le même hachage. Donc non, vous ne pouvez pas comparer les données d'un fichier Excel avec les données d'un autre fichier Excel en hachant le fichier parce qu'il y a un risque de collision. lot des façons dont deux fichiers peuvent différer sans que les données sous-jacentes soient différentes. L'une d'entre elles est évidente : les données sont stockées au format XML et chaque cellule possède son propre nœud XML. Si ces nœuds sont stockés dans des ordres différents, les données sont les mêmes mais le fichier est différent.

3voto

Giulio Muscarello Points 161

Pour compléter les autres réponses, ici Il existe de nombreux exemples de couples de fichiers ayant le même hachage MD5 et un contenu différent.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X