在写入文件时尝试加密NSDictionary

时间:2011-05-05 10:05:01

标签: ios encryption uikit nsdictionary

我目前正在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];

有人能告诉我加密\解密这个的好方法吗?

干杯, 富

1 个答案:

答案 0 :(得分:23)

使用NSKeyedArchiver从字典中创建NSData对象(NSKeyedArchiver archivedDataWithRootObject:)。然后encrypt the NSData with AES并将其写入您的文件。

读取反过来:首先,读取NSData,通过上述链接中的方法解密,然后将解密的NSData传递给NSKeyedUnarchiver(NSKeyedUnarchiver unarchiveObjectWithData:),然后重新获得字典。