我目前正在iOS设备上保存NSDictionary文件。但是,NSDictionary文件是可读的XML。我不希望人们能够进入并阅读内容,因此我需要能够在写入时加密文件并在重新加载时解密。
我目前正在保存这样的文件:
NSFileManager* fileManager = [NSFileManager defaultManager];
if (!fileManager)
{
NSLog(@"Failed to get file manager to save.");
return;
}
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* filePath = [documentsDirectory stringByAppendingPathComponent:@"save.dic"];
[m_dictionary writeToFile:filePath atomically:YES];
我正在加载这样的词典:
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* filePath = [documentsDirectory stringByAppendingPathComponent:@"save.dic"];
m_dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
有人能告诉我加密\解密这个的好方法吗?
干杯, 富
答案 0 :(得分:23)
使用NSKeyedArchiver
从字典中创建NSData
对象(NSKeyedArchiver archivedDataWithRootObject:)。然后encrypt the NSData with AES并将其写入您的文件。
读取反过来:首先,读取NSData,通过上述链接中的方法解密,然后将解密的NSData传递给NSKeyedUnarchiver(NSKeyedUnarchiver unarchiveObjectWithData:),然后重新获得字典。