Определить, защищен ли zip-файл паролем с помощью Minizip

#c #c #zip #zlib #unzip

#c #c #zip #zlib #распаковать

Вопрос:

Я использую Minizip для работы с некоторыми zip-файлами и хотел бы иметь возможность проверять, содержит ли zip-файл зашифрованные / защищенные паролем файлы. Если я вызову unzGetCurrentFileInfo и посмотрю на результирующую структуру unz_file_info, я заметил, что поле external_fa похоже на 0 для незашифрованных файлов и 0x20 для зашифрованных.

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

Кто-нибудь знает больше?

Комментарии:

1. external_fa должно быть не связано, но должно быть установлено значение флага общего назначения 32.

2. вы используете c или c ? Также вы говорите, что используете Minzip, но с тегом zlib, что это такое?

3. Смотрите Спецификацию формата ZIP-файла . Шифрование было добавлено в версии 5.2 (но оно было ошибочным). Файл в архиве зашифрован, если присутствует «заголовок шифрования» . Заголовок шифрования ДОЛЖЕН быть размещен после «локального заголовка» .

4. Бит флага общего назначения 0 установлен для зашифрованных файлов. Оба бита 6 и 0 устанавливаются, если используется «надежное шифрование».

5. Minizip недоступен в качестве тега в SO, но поскольку он построен поверх zlib, я пометил его. Я работаю на C , но поскольку minizip и zlib являются C, я пометил оба.