2014-09-24 1 views
1

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

Я хочу, чтобы защитить их паролем и обратите внимание на вызов ...

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

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

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

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

Помощь и рекомендации оценены.

Благодаря

+0

Вы нашли ответ на этот вопрос? – SAHM

+0

К сожалению, нет. У вас есть ответ? – Fittoburst

+0

Нет, пытаясь понять это. Спасибо, что ответили так быстро. – SAHM

ответ

0

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

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 в свой проект.

+1

Вслед за этими инструкциями не удалось решить проблему. Я не могу распаковать полученный zip-файл с неправильной ошибкой пароля. Есть идеи? Обратите внимание, что я запишу больше файлов в одном архиве. – Donnit

+0

Это работает, если вы заархивируете только один файл? Какое программное обеспечение вы используете для распаковки? – Matt

+0

Я попробую с одним файлом. Для распаковки я использую «The Unarchiver» для Mac. Но я также попробовал утилиты оболочки на linux и mac ... – Donnit