Ho un'app per iPhone che crittografa un NSString immesso tramite CCCrypt (AES256) e una chiave in chiaro. La stringa e la chiave vengono assegnate al metodo di crittografia che restituisce un oggetto NSData.NSData crittografato su NSString in obj-c?
Richiesta [descrizione dei dati] dove 'dati' sono i dati stringa crittografata fornisce una NSString come: "< 0b368353 a707e7de 3eee5992 ee69827e e3603dc2 b0dbbc0b 861ca87d f39ce72a>", ma quando provo a convertire in un NSString, ottengo "(nullo)".
Ho bisogno di restituire un NSString all'utente, che può essere utilizzato per decifrare di nuovo alla stringa originale usando la stessa chiave in chiaro. Se la proprietà 'description' dell'oggetto NSData può restituire una stringa, esiste un modo per produrre una NSString dall'oggetto NSData senza ottenere "(null)"?
AGGIORNAMENTO: Grazie a Quinn, che suggerisce di utilizzare la codifica Base64 per produrre la stringa confusa. Da quello che ho capito, la codifica Base64 non si limita a scambiare i caratteri, ma lo scambio di caratteri dipende dalla posizione, quindi va bene.
La mia unica preoccupazione è che voglio essere in grado di crittografare il messaggio con una "passphrase", e richiedere la passphrase identica da inserire quando la stringa confusa deve essere decodificata - qualcuno può suggerire modi per implementarlo?
Ho aggiornato la mia risposta per rispondere a questa domanda. Sei corretto, Base64 non è un algoritmo di sostituzione, in pratica espande 3 byte fino a 4 byte, quindi i dati codificati sono 1.37x grandi quanto la loro controparte non codificata. Fondamentalmente, ci vogliono 3 blocchi da 8 bit e lo si riduce in 4 blocchi da 6 bit, quindi li reinterpreta ciascuno come blocchi da 8 bit, che possono essere facilmente rappresentati in ASCII. Wikipedia ha più dettagli. –