我正在尝试使用this project来执行它所说的内容,加密应用程序包中的某些资产。命令行工具可以很好地加密文件,但是在尝试在运行时读取我的文件时我迷失了。我基本上只有一个我需要加载的文件使用NSDictionary,但是对于我来说没有意义的调用文件是没有意义的。
我的代码:
NSMutableDictionary *readDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plist];
解密守则:
-(NSData*) decryptedWithKey:(NSData*)key;
我不知道该怎么办?救命!
这是github上的项目> https://github.com/nerdcave/encrypt-assets
答案 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
所以字典和内容是可变的。)