Цель Zip-пароль и CRC

Я использую Objective Zip для архивирования некоторых файлов в моем iOS-приложении.

Я хочу защитить их паролем и записать звонок...

- (ZipWriteStream *) writeFileInZipWithName:(NSString *)fileNameInZip fileDate:(NSDate *)fileDate compressionLevel:(ZipCompressionLevel)compressionLevel password:(NSString *)password crc32:(NSUInteger)crc32;

... требуется значение CRC32.

Не будучи экспертом в этом, и прочитав о CRC в Википедии и т. Д., Я все еще не уверен, какую ценность ввести здесь.

Может ли это быть ноль? Должно ли это быть число байтов файла? Любое случайное число?

Помощь и руководство приветствуются.

Спасибо

1 ответ

Сначала вы должны рассчитать значение CRC для вашего файла, который вы хотите сжать:

NSData *data = [[NSData alloc] initWithContentsOfFile:@"/path/to/your/file/to/zip"];
unsigned long result = crc32(0, data.bytes, (unsigned int)data.length);

Создайте новый Zip, добавьте свой файл и передайте результат CRC:

ZipFile *zipFile= [[ZipFile alloc] initWithFileName:@"/tmp/File.zip" mode:ZipFileModeCreate];
ZipWriteStream *stream= [zipFile writeFileInZipWithName:@"File.name" fileDate:[NSDate date] compressionLevel:ZipCompressionLevelDefault password:@"your_password"] crc32:result];
[stream writeData:data];
[stream finishedWriting];

[zipFile close];

Убедитесь, что следующая строка в zip.c (MiniZip) не закомментирована:

//#define NOCRYPT

Также убедитесь, что вы добавили файл crypt.h в ваш проект.

Другие вопросы по тегам