Цель 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 в ваш проект.