Mi aplicación cifra y descifra (o debería) un NSString (el texto que se va a cifrar/descifrar) con otro NSString (la palabra clave) utilizando aes Cifrado de 256 bits. Cuando ejecuto mi proyecto y ejecuto el método de cifrado, nada se cifra, el campo de texto simplemente se borra. Aquí está el código que tengo:Cifrado NSString AES256 en iOS
-(void)EncryptText {
//Declare Keyword and Text
NSString *plainText = DataBox.text;
NSString *keyword = Keyword.text;
//Convert NSString to NSData
NSData *plainData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
//Encrypt the Data
NSData *encryptedData = [plainData AESEncryptWithPassphrase:keyword];
//Convert the NSData back to NSString
NSString* cypherText = [[NSString alloc] initWithData:encryptedData encoding:NSUTF8StringEncoding];
//Place the encrypted sting inside the Data Box
NSLog(@"Cipher Text: %@", cypherText);
}
Los archivos de cabecera se pueden descargar haciendo clic en este enlace: ZIP File containing AES Implementation
Me han dicho que tengo que usar base 64 codificación de mi cadena para conseguir cualquier resultado . Si esto es cierto, ¿cómo lo hago?
También me han dicho que el cifrado cambió en iOS 5, y mi aplicación es SOLO para iOS 5+. Si esto es cierto, entonces ¿qué tengo que hacer para que este cifrado funcione en iOS 5 o dónde puedo encontrar otra implementación AES de 256 bits que funcione en NSString?
¿Por qué este código no produce un resultado?
Gracias Rob! ¡Eso es muy útil! –
¿Dónde iría el código que se muestra en: http://robnapier.net/blog/aes-commoncrypto-564? No entraría en su propia clase porque no hay nada que entrar en un encabezado y una implementación, ¿entraría en el mismo archivo .m en el que está mi método? –
Normalmente lo pongo en una clase llamada 'RNCryptManager', pero puede colocarlo en cualquier lugar. El código también podría convertirse trivialmente en funciones en lugar de métodos de clase. –