1

我正在使用 Objective Zip 压缩我的 iOS 应用程序上的一些文件。

我想用密码保护他们并记下电话...

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

...需要一个 CRC32 值。

不是这方面的专家,并且在维基百科等上阅读过关于 CRC 的信息,我仍然不确定在这里输入什么值。

可以为零吗?它应该是文件的字节数吗?有随机数吗?

帮助和指导表示赞赏。

谢谢

4

1 回答 1

0

首先,您必须计算要压缩的文件的 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添加到您的项目中。

于 2015-03-09T10:13:22.320 回答