Мне нравится базовая идея Лоран S, чтобы убедиться, что у вас есть те же самые условия, когда вы запускаете тесты. Пока вы не считаете проблему безопасности проблемой, я бы согласился на использование md5.
Поскольку вы очень неспецифичны в отношении метаданных, которые различаются при каждом запуске, мне стало любопытно и сделал короткий тест.
zip t1 t00*png
zip t2 t00*png
Теперь некоторые мета- изменение:
touch t00*.png
zip t3 t00*png
Результат:
md5sum *.zip
760a4a1c52f3bc6cdd29c1fff7b94c1f t1.zip
760a4a1c52f3bc6cdd29c1fff7b94c1f t2.zip
83a8dcb9fe0d50e7b2b8012c8842005e t3.zip
Это означает, что - наконец мою версию молнии [1] не делает производить повторяемые содержание, пока нет метаданные изменены.
Ваших изменений - по определению - не часть содержимого файлов (EXIF данные, например, в формате JPEG также метаданных, но часть файла - в то время как дата доступа к файлам не). В противном случае у вас не было бы шанса использовать любую хэш-функцию вообще.
Итак, если вам нужен сопоставимый результат, в то время как содержимое файлов одинаков, но их метаданные (метаданные файловой системы), вы не могли бы сэкономить огромное количество усилий, просто настроив метаданные.
Как вы делаете какой-то Unit- тест здесь вы можете даже использовать это в качестве проверки на md5-суммы являются идентичными с подредактированны метаданных и различных без.
Доказательство концепции:
touch t00*.png -d '2000-01-01T0:00'
zip t1 t00*png
touch t00*.png -d
zip t2 t00*png
touch t00*.png -d '2000-01-01T0:00'
zip t3 t00*png
Результат:
md5sum *.zip
a1e713c1d91a0042b37043c83bb98d1b t1.zip
3085aa53bee69df4be783636b87ed62c t2.zip
a1e713c1d91a0042b37043c83bb98d1b t3.zip
Последнее, но не менее вы можете попытаться настроить эти области вашего файла ZIP-, которые не относятся к тесту. Как ZIP кажется хорошо формат Behaving контейнера метаданные моих изменений отображаются в аккуратных расстояниях - закалка моего предположения, что они являются заголовками/колонтитулами в файл:
cat t1.zip| xxd -ps -c 20 > t1.hd
cat t2.zip| xxd -ps -c 20 > t2.hd
diff t1.hd t2.hd
1c1
< 504b03041400000008000000212822aad7cacc0b
---
> 504b0304140000000800c37a574a22aad7cacc0b
3c3
< 09000370356d3870356d3875780b000104e80300
---
> 0900030df0ae580df0ae5875780b000104e80300
3432c3432
< 6082504b030414000000080000002128143698a4
---
> 6082504b0304140000000800c37a574a143698a4
3434c3434
< 555409000370356d3870356d3875780b000104e8
---
> 55540900030df0ae580df0ae5875780b000104e8
19691,19693c19691,19693
...
Обратите внимание, что, очевидно, минимальные различия, обусловленные метаданными - изменение.
[1] Linux 4.9.9-1-ARCH #1 SMP PREEMPT Thu Feb 9 19:07:09 CET 2017 x86_64 GNU/Linux, <br>
Zip 3.0 (July 5th 2008), by Info-ZIP, Compiled with gcc 5.3.0 for Unix (Linux ELF) on Jan 12 2016.
Вы хотите проверить один zip-файл с другим zip-файлом, используя md5 или содержимое? –
@ v.coder Я пишу модуль тестирования для приложения, ожидая каждый раз, когда приложение генерирует zip-файл с таким же содержимым. – Luke
, так что вы проверяете содержимое zip-файла? –