Mam aplikację na iPhone'a, która szyfruje wprowadzony NSString za pomocą CCCrypt (AES256) i klucza zwykłego tekstu. Łańcuch i klucz są podane w metodzie szyfrowania, która zwraca obiekt NSData.Zaszyfrowane NSData do NSString w obj-c?
Żądanie [opis danych] gdzie „dane” jest zaszyfrowane dane ciąg daje NSString jak: „< 0b368353 a707e7de 3eee5992 ee69827e e3603dc2 b0dbbc0b 861ca87d f39ce72a>”, ale gdy próbuję przekonwertować do NSString, otrzymuję „(zero)".
Muszę zwrócić NSString do użytkownika, który może być użyty do odszyfrowania z powrotem do oryginalnego ciągu za pomocą tego samego klucza tekstowego. Jeśli właściwość 'description' obiektu NSData może zwrócić ciąg znaków, czy istnieje sposób, w jaki mogę wygenerować NSString z obiektu NSData bez uzyskania "(null)"?
AKTUALIZACJA: Podziękowania dla Quinna, który sugeruje użycie kodowania Base64 w celu utworzenia splątanego łańcucha. Z tego co rozumiem, kodowanie Base64 nie polega jedynie na zamianie znaków, ale wymiana znaków zależy od pozycji, więc to jest w porządku.
Moim jedynym zmartwieniem jest to, że chcę móc zaszyfrować wiadomość za pomocą "hasła" i wymagać podania identycznego hasła, gdy rozmyty łańcuch musi zostać zdekodowany - czy ktoś może zaproponować sposoby wdrożenia tego?
Zaktualizowałem swoją odpowiedź pod adresem podanym poniżej. Masz rację, Base64 nie jest algorytmem zastępowania - w zasadzie rozszerza 3 bajty do 4 bajtów, więc zakodowane dane są 1,37x tak duże, jak ich niekodowany odpowiednik. Zasadniczo zajmuje 3 porcje 8-bitowe i redivides go na 4 6-bitowe porcje, a następnie reinterpretuje każdy z nich jako 8-bitowe kawałki, które mogą być łatwo reprezentowane w ASCII. Wikipedia ma więcej szczegółów. –