Подтвердить что ты не робот

Попытка шифрования NSDictionary при записи в файл

В настоящее время я сохраняю NSDictionary для файла на устройстве iOS. Однако файлы 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];

Может ли кто-нибудь сказать мне хороший способ шифрования\расшифровки этого?

Cheers, Рич

4b9b3361

Ответ 1

Используйте NSKeyedArchiver для создания объекта NSData из вашего словаря (NSKeyedArchiver archivedDataWithRootObject:). Затем зашифруйте NSData с помощью AES и напишите это в свой файл.

Чтение берет обратное: сначала прочитайте NSData, расшифруйте его с помощью метода из указанной ссылки, затем передайте расшифрованные NSData в NSKeyedUnarchiver (NSKeyedUnarchiver unarchiveObjectWithData:), и вы вернете свой словарь.