Java/zip: Почему .jar файлы недетерминировано создаются?

Я никогда действительно изучил его, но теперь я понял, что не могу легко создать два идентичных .jar файла.

Я имею в виду, если я создаю дважды, ничего не изменяя, я получаю тот же самый размер, но различные контрольные суммы для .jar.

Таким образом, я быстро запустил некоторый тест (в основном разархивация, вид-n-k 5'ing и затем diff'ing), чтобы видеть, что все файлы в .jar были идентичны, все же .jar отличались.

Таким образом, я сделал тест с плоскостью .zip файл и нашел это:

... $ 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

(точно тот же самый .zip размер файла)

... $ sha1sum ?.zip
db99f6ad5733c25c0ef1695ac3ca3baf5d5245cf  1.zip
eaf9f0f92eb2ac3e6ac33b44ef45b170f7984a91  2.zip

(различные суммы SHA-1, позвольте, посмотрите почему),

$ 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|

Разархивация обоих zip-файлов, конечно, отдает наш уникальный файл.

Вопрос: почему это? (Я отвечу мне),

12
задан SyntaxT3rr0r 21 July 2010 в 10:21
поделиться

1 ответ

(Отвечая самому себе) Это потому, что формат файла .zip сохраняет время создания и модификации в своих заголовках.

Если вы действительно хотите создать два одинаковых .zip (или .jar ), вы должны убедить второй, что он был создан / изменен точно в одно и то же время. как первый.

6
ответ дан 2 December 2019 в 23:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: