Criptografia / descriptografia da class NSData-AES no cacau

Eu estou tentando criptografar / descriptografar um arquivo de texto simples no meu editor de texto. criptografia parece funcionar bem, mas a descriptografia não funciona, o texto aparece criptografado. Tenho certeza de que descriptografei o texto usando a palavra com a qual eu o criptografei – alguém poderia ver o snippet abaixo e me ajudar?

Obrigado 🙂

Criptografando:

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]; 

Descriptografando:

  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 que não usar os algoritmos de criptografia integrados? Aqui está um NSData + AES que eu escrevi, que usa o CCCrypt com uma chave 256it para criptografia AES256.

Você pode usá-lo como:

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

e descriptografar com:

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

ISENÇÃO DE RESPONSABILIDADE: Não há garantia de que meu NSData + AES está livre de bugs 🙂 É relativamente novo. Congratulo-me com comentários de código.