Как создать минимальный размер (пустой) zip файл, который имеет 22B?

Я пытаюсь решить некоторую проблему безопасности с файлом, чей хэш MD5 имеет значение 76cdb2bad9582d23c1f6f4d868218d6c.

У меня нет этого файла, но на основе интернет-поиска MD5, я думаю, это минимальный размер zip файла. Я нашел один пример, и его содержимое точно такое же, как минимальный размер zip файла.

Возможно ли создать такой минимальный размер zip файла (22 B) с помощью команды Linux (или Windows)?

BTW: Недавно я решил аналогичную задачу с файлом gzip: gzip -n EmptyFileName

Ответ 1

Здесь вы идете:

50 4b 05 06 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00

У вас есть подпись MD5, которую вы предоставили.

Если у вас есть Info-ZIP zip, вы можете создать его таким образом:

zip empty.zip anyfile
zip -d empty.zip anyfile

Это добавляет "anyfile" в новый zip файл, а затем удаляет его из zip файла, оставляя его пустым.

Ответ 2

Более простая в использовании версия для копирования и вставки в оболочку:

echo UEsFBgAAAAAAAAAAAAAAAAAAAAAAAA== | base64 -d > empty.zip

Это просто печатает версию base64 пустого zip файла (созданного путем создания zip файла с одним файлом, затем удаляя этот единственный файл из zip файла), и изменяет кодировку с base64 -d и записывает вывод в empty.zip


Если версия base64, поставляемая с вашей машиной, не использует тот же синтаксис, что и выше, здесь более переносимая, но менее краткая альтернатива:

echo UEsFBgAAAAAAAAAAAAAAAAAAAAAAAA==  | openssl enc -d -base64 > empty.zip

Ответ 3

с помощью этого сценария .bat вы можете создать empty.zip файл empty.zip под windows:

@echo off

del /q /f empty.zip >nul 2>nul
certutil -decode "%~f0" empty.zip

-----BEGIN CERTIFICATE-----
UEsFBgAAAAAAAAAAAAAAAAAAAAAAAA==
-----END CERTIFICATE-----