Ich habe eine iPhone App, die einen eingegebenen NSString mit CCCrypt (AES256) und einem Klartextschlüssel verschlüsselt. Die Zeichenfolge und der Schlüssel werden der Verschlüsselungsmethode übergeben, die ein NSData-Objekt zurückgibt.Verschlüsselte NSData zu NSString in obj-c?
anfordern [Datenbeschreibung], wobei ‚Daten‘ sind die verschlüsselten Zeichenfolge Daten geben einen NSString wie: „< 0b368353 a707e7de 3eee5992 ee69827e e3603dc2 b0dbbc0b 861ca87d f39ce72a>“ aber wenn ich versuche, das zu einem NSString zu konvertieren, erhalte ich „(Null)".
Ich muss einen NSString an den Benutzer zurückgeben, der verwendet werden kann, um mit dem gleichen Klartextschlüssel zurück zur ursprünglichen Zeichenfolge zu entschlüsseln. Wenn die Eigenschaft 'description' des NSData-Objekts eine Zeichenfolge zurückgeben kann, gibt es eine Möglichkeit, einen NSString vom NSData-Objekt zu erstellen, ohne "(null)" zu erhalten?
UPDATE: Danke an Quinn, der vorschlägt, die Base64-Codierung zu verwenden, um die verwirrte Zeichenfolge zu erzeugen. Soweit ich weiß, vertauscht die Base64-Codierung nicht einfach Zeichen, aber der Zeichenaustausch hängt von der Position ab, also ist das in Ordnung.
Meine einzige Sorge ist, dass ich die Nachricht mit einer "Passphrase" verschlüsseln und die identische Passphrase eingeben möchte, wenn die verwirrte Zeichenfolge decodiert werden muss - kann jemand Möglichkeiten vorschlagen, dies zu implementieren?
Ich habe meine Antwort zu diesem Thema aktualisiert. Sie sind richtig, Base64 ist kein Substitutionsalgorithmus - es erweitert grundsätzlich 3 Bytes auf 4 Bytes, so dass kodierte Daten 1,37 x so groß sind wie sein nicht kodiertes Gegenstück. Im Grunde dauert es 3 8-Bit-Chunks und rediviert es in 4 6-Bit-Chunks, dann interpretiert jeder dieser als 8-Bit-Chunks, die leicht in ASCII dargestellt werden können. Wikipedia hat mehr Details. –