使用+(NSData *)读回文件

时间:2014-03-01 22:24:21

标签: objective-c encryption nsdictionary

我正在尝试使用this project来执行它所说的内容,加密应用程序包中的某些资产。命令行工具可以很好地加密文件,但是在尝试在运行时读取我的文件时我迷失了。我基本上只有一个我需要加载的文件使用NSDictionary,但是对于我来说没有意义的调用文件是没有意义的。

我的代码:

NSMutableDictionary *readDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plist];

解密守则:

-(NSData*) decryptedWithKey:(NSData*)key;

我不知道该怎么办?救命!

这是github上的项目> https://github.com/nerdcave/encrypt-assets

1 个答案:

答案 0 :(得分:1)

您无法使用initWithContentsOfFile:直接创建字典,因为该文件已加密,因此您需要先加载文件数据并对其进行解密:

NSData *fileData = [[NSData alloc] initWithContentsOfFile:...];
NSData *decryptedData = [fileData decryptedWithKey:...];

现在,您需要使用NSPropertyListSerialization从未加密的数据中获取字典:

NSMutableDictionary *readDict = [NSPropertyListSerialization propertyListWithData: decryptedData options:NSPropertyListMutableContainersAndLeaves format:nil error:&error];

(使用NSPropertyListMutableContainersAndLeaves所以字典和内容是可变的。)