Je ne l'ai jamais vraiment regardé mais maintenant j'ai réalisé que je ne peux pas facilement créer deux fichiers .jar identiques. Je veux dire, si je construis deux fois, sans rien changer, j'obtiens exactement la même taille mais des sommes de contrôle différentes pour le .jar.Java/zip: Pourquoi les fichiers .jar sont-ils créés de manière non déterministe?
Alors je me suis vite couru quelques tests (essentiellement décompressé, sort -n -k 5 'ing puis diff' ing) pour voir que tous les fichiers à l'intérieur .jar étaient identiques, mais les .jar étaient différents.
J'ai donc fait un test avec un fichier .zip simple et trouvé ceci:
... $ zip 1.zip a.txt
... $ zip 2.zip a.txt
... $ ls -l ?.zip
-rw-rw-r-- 1 webinator webinator 147 2010-07-21 13:09 1.zip
-rw-rw-r-- 1 webinator webinator 147 2010-07-21 13:09 2.zip
(exactement la même taille de fichier .zip)
... $ sha1sum ?.zip
db99f6ad5733c25c0ef1695ac3ca3baf5d5245cf 1.zip
eaf9f0f92eb2ac3e6ac33b44ef45b170f7984a91 2.zip
(différent SHA-1 sommes, voyons pourquoi)
$ hexdump 1.zip -C > 1.txt
$ hexdump 2.zip -C > 2.txt
$ diff 1.txt 2.txt
3c3
< 00000020 74 78 74 55 54 09 00 03 ab d4 46 4c*4e*d5 46 4c |txtUT.....FLN.FL|
---
> 00000020 74 78 74 55 54 09 00 03 ab d4 46 4c*5d*d5 46 4c |txtUT.....FL].FL|
Dézipper les deux fichiers zip rend sûrement notre fichier unique.
Question: pourquoi est-ce? (Je vais répondre moi-même)
Pourquoi posez-vous une question lorsque vous connaissez déjà la réponse? – Gumbo
@Gumbo: J'ai trouvé la réponse en tapant la question (pourquoi SO permet-il de répondre à sa propre question? :) et compris que la question peut intéresser d'autres personnes (que les deux upvotes sur dix semblent indiquer :) – SyntaxT3rr0r
Pourquoi la downvote? – SyntaxT3rr0r