ios - seguridad - Intentando encriptar un NSDictionary al escribir en un archivo
recuperar contraseƱa copia de seguridad itunes (1)
Actualmente estoy guardando un NSDictionary para archivar en el dispositivo iOS. Sin embargo, los archivos NSDictionary son legibles en XML. No quiero que las personas puedan entrar y leer los contenidos, así que tengo que poder encriptar el archivo al escribirlo y descifrarlo cuando vuelva a cargarlo.
Actualmente estoy guardando el archivo así:
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];
Y estoy cargando el diccionario así:
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* filePath = [documentsDirectory stringByAppendingPathComponent:@"save.dic"];
m_dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
¿Alguien puede decirme una buena forma de encriptar / descifrar esto?
Saludos, rico
Utilice un NSKeyedArchiver
para crear un objeto NSData
de su diccionario ( NSKeyedArchiver archivedDataWithRootObject:) . Luego encripte el NSData con AES y escríbalo en su archivo.
La lectura toma el reverso: primero, lea el NSData, descifrelo a través del método del enlace mencionado, luego pase el NSData descifrado a NSKeyedUnarchiver ( NSKeyedUnarchiver unarchiveObjectWithData :) y recuperará su diccionario.