Cifrado / descifrado de clase NSData-AES en cocoa

Estoy intentando cifrar / descifrar un archivo de texto plano en mi editor de texto. El encriptado parece funcionar bien, pero el descifrado no funciona, el texto aparece encriptado. Estoy seguro de que he descifrado el texto usando la palabra con la que lo cifré. ¿Podría alguien mirar el siguiente fragmento y ayudarme?

Gracias 🙂

Encriptación:

NSAlert *alert = [NSAlert alertWithMessageText:@"Encryption" defaultButton:@"Set" alternateButton:@"Cancel" otherButton:nil informativeTextWithFormat:@"Please enter a password to encrypt your file with:"]; [alert setIcon:[NSImage imageNamed:@"License.png"]]; NSSecureTextField *input = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 300, 24)]; [alert setAccessoryView:input]; NSInteger button = [alert runModal]; if (button == NSAlertDefaultReturn) { [[NSUserDefaults standardUserDefaults] setObject:[input stringValue] forKey:@"password"]; NSData *data; [self setString:[textView textStorage]]; NSMutableDictionary *dict = [NSDictionary dictionaryWithObject:NSPlainTextDocumentType forKey:NSDocumentTypeDocumentAttribute]; [textView breakUndoCoalescing]; data = [[self string] dataFromRange:NSMakeRange(0, [[self string] length]) documentAttributes:dict error:outError]; NSData*encrypt = [data AESEncryptWithPassphrase:[input stringValue]]; [encrypt writeToFile:[absoluteURL path] atomically:YES]; 

Descifrado

  NSAlert *alert = [NSAlert alertWithMessageText:@"Decryption" defaultButton:@"Open" alternateButton:@"Cancel" otherButton:nil informativeTextWithFormat:@"This file has been protected with a password.To view its contents,enter the password below:"]; [alert setIcon:[NSImage imageNamed:@"License.png"]]; NSSecureTextField *input = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 300, 24)]; [alert setAccessoryView:input]; NSInteger button = [alert runModal]; if (button == NSAlertDefaultReturn) { NSLog(@"Entered Password - attempting to decrypt."); NSMutableDictionary *dict = [NSDictionary dictionaryWithObject:NSPlainTextDocumentType forKey:NSDocumentTypeDocumentOption]; NSData*decrypted = [[NSData dataWithContentsOfFile:[self fileName]] AESDecryptWithPassphrase:[input stringValue]]; mString = [[NSAttributedString alloc] initWithData:decrypted options:dict documentAttributes:NULL error:outError]; 

¿Por qué no usar los algoritmos de encriptación incorporados? Este es un NSData + AES que escribí y que utiliza CCCrypt con una clave 256it para el cifrado AES256.

Puedes usarlo como:

 NSData *data = [[NSData dataWithContentsOfFile:@"/etc/passwd"] encryptWithString:@"mykey"]; 

y descifrarlo con:

 NSData *file = [data decryptWithString:@"mykey"]; 

DESCARGO DE RESPONSABILIDAD: No hay garantía de que mi NSData + AES esté libre de errores 🙂 Es bastante nuevo. Doy la bienvenida a revisiones de código.