Tengo una aplicación para iPhone que encripta un NSString ingresado usando CCCrypt (AES256) y una clave de texto sin formato. La cadena y la clave se asignan al método de cifrado que devuelve un objeto NSData.NSData cifrado a NSString en obj-c?
Solicitando [descripción de datos], donde 'datos' son los datos cadena cifrada da una NSString como: "< 0b368353 a707e7de 3eee5992 ee69827e e3603dc2 b0dbbc0b 861ca87d f39ce72a>" pero cuando intento de convertir eso a un NSString, me sale "(nulo)".
Necesito devolver un NSString al usuario, que se puede utilizar para descifrar la cadena original utilizando la misma clave de texto sin formato. Si la propiedad 'description' del objeto NSData puede devolver una cadena, ¿hay alguna manera de que pueda producir un NSString desde el objeto NSData sin obtener "(null)"?
ACTUALIZACIÓN: Gracias a Quinn, quien sugiere utilizar la codificación Base64 para producir la cadena confusa. Por lo que entiendo, la codificación Base64 no solo intercambia caracteres, sino que el intercambio de caracteres depende de la posición, así que está bien.
Mi única preocupación es que quiero poder encriptar el mensaje con una 'frase de contraseña', y requerir la contraseña idéntica para ingresar cuando se necesita decodificar la cadena confusa - ¿alguien puede sugerir formas de implementar esto?
He actualizado mi respuesta para abordar esto a continuación. Estás en lo cierto, Base64 no es un algoritmo de sustitución, básicamente expande 3 bytes a 4 bytes, por lo que los datos codificados son 1.37x tan grandes como su contraparte no codificada. Básicamente, toma 3 fragmentos de 8 bits y los divide en 4 trozos de 6 bits, luego los reinterpreta como trozos de 8 bits, que se pueden representar fácilmente en ASCII. Wikipedia tiene más detalles. –