Ответ 1
Прежде всего, НЕ используйте, используйте -[NSData description]
для создания NSString для таких целей. (Лучше рассматривать -description
как вывод отладки. Прошу прощения, если мой предыдущий ответ ввел вас в заблуждение, я просто печатал описание, чтобы продемонстрировать, что NSData можно зашифровать и decrypted.) Вместо этого используйте методы NSString -dataUsingEncoding:
и -initWithData:encoding:
для преобразования между NSData и NSString. Даже при этом обратите внимание, что зашифрованные данные AES, вероятно, не будут хорошо транслироваться в строки как есть - некоторые байтовые последовательности просто не будут хорошо воспроизводиться, поэтому неплохо было бы кодировать данные перед созданием строки.
Я предлагаю вам попробовать Base64 encoding NSData, так как данные Base64 всегда могут быть представлены как строка ASCII. (Конечно, когда вы это сделаете, вам придется декодировать из Base64 перед расшифровкой.)
Вот некоторые полезные ресурсы...
- Colloquy содержит код, который кодирует/расшифровывает NSData ( и реализация)
- Google Toolbox для Mac имеет схожую функциональность (header и реализация)
- A Cocoa С сообщением в блоге Love по теме.
- A Страница вики CocoaDev.com по теме.
Изменить: Я предполагал, что вы объедините это с моим ответом на ваш предыдущий вопрос по шифрованию AES объектов NSString. Кодирование данных как Base64 не накладывает никаких ограничений на сами данные - это, безусловно, может быть AES-зашифрованные данные. Здесь, что делать, если вы просто хотите вводить и выводить строку:
- Шифрование
- Обеспечить шифрование NSString и кодовую фразу, используемую для шифрования.
- Преобразуйте строку в NSData и выполните шифрование AES (см. предыдущий вопрос).
- Base64-encode NSData, затем создайте и верните и NSString для кодированного вывода.
- дешифрование
- Предоставить зашифрованную и закодированную строку и кодовую фразу, используемую для дешифрования.
- Создайте NSData из первой строки, затем Base64-декодируйте данные.
- Выполните дешифрование AES на данных, затем создайте и верните NSString.
На самом деле это всего лишь вопрос объединения двух частей вместе и выполнения их в обратном направлении на выходе. Из моего предыдущего ответа вы можете изменить encryptString:withKey:
, чтобы выполнить последний шаг и вернуть строку, и изменить decryptData:withKey:
как decryptString:withKey:
и принять две строки. Это довольно просто.