Еще хуже, я думаю:
Выполнение одной и той же zip-операции дважды может привести к двум разным zip-архивам:
> zip some.zip some.txt
adding: some.txt (stored 0%)
> zip other.zip some.txt
adding: some.txt (stored 0%)
> ll
total 24
-rw-r--r-- 1 cthies staff 170 12 Dez 18:01 other.zip
-rw-r--r-- 1 cthies staff 4 12 Dez 18:01 some.txt
-rw-r--r-- 1 cthies staff 170 12 Dez 18:01 some.zip
> md5 *.zip
MD5 (other.zip) = f56d7753c5af78427274d930b9fb8c90
MD5 (some.zip) = e2f0382c4ad31871f62fb559157df8e8
Глядя в двоичные файлы, можно увидеть разницу только в одном месте:
> xxd some.zip > some.xxd
> xxd other.zip > other.xxd
> colordiff *.xxd
3c3
< 0000020: 6d65 2e74 7874 5554 0900 0363 33e6 4e78 me.txtUT...c3.Nx
---
> 0000020: 6d65 2e74 7874 5554 0900 0363 33e6 4e64 me.txtUT...c3.Nd
Я думаю (в зависимости от самого zip-приложения) текущее системное время может / будет вовлечено. Таким образом, любая zip-операция на тех же самых источниках может (!) Быть уникальной, и поэтому контрольные суммы нельзя считать равными.
Не зависящие от времени инструменты, которые я нашел: tar , 7z . (обе командной строки)
То есть tar и 7z воспроизводит архивы с одинаковыми контрольными суммами (md5).
(протестировано на OSX 10.6.8 с утилитой zip из командной строки)