Зашифрованный NSData к NSString в obj-c?

Дважды щелкните на "My Project" в Проводнике Решения и посмотрите на "Тип приложения": ComboBox. Это говорит Вам (и позволяет Вам измениться), тип проекта.

15
задан Boz 13 September 2009 в 16:14
поделиться

1 ответ

Во-первых, НЕ используйте - [NSData description] для создания NSString для таких целей. (Лучше рассматривать -описание как результат отладки. Прошу прощения, если мой предыдущий ответ ввел вас в заблуждение, я просто распечатал описание, чтобы продемонстрировать, что NSData можно зашифровать и расшифровать.) Вместо этого используйте методы NSString -dataUsingEncoding: и -initWithData: encoding: для преобразования между NSData и NSString. Даже с этим, обратите внимание, что данные, зашифрованные AES, вероятно, не будут хорошо преобразованы в строки как есть - некоторые последовательности байтов просто не будут хорошо воспроизводиться, поэтому рекомендуется закодировать данные перед созданием строки.

I ' Я предлагаю вам попробовать кодировку Base64 NSData, поскольку данные Base64 всегда можно представить в виде строки ASCII. (Конечно, когда вы это сделаете, вам придется декодировать из Base64 перед расшифровкой.)

Вот несколько полезных ресурсов ...


Изменить: Я предполагал, что вы объедините это с моим ответом на ваш предыдущий вопрос об AES-шифровании объектов NSString. Кодирование данных, как это не делает Base64 ' не накладывать никаких ограничений на сами данные - это, безусловно, могут быть сами данные, зашифрованные AES. Вот что делать, если вам нужен только строковый ввод и вывод:

  • Шифрование
    • Предоставьте NSString для шифрования и парольную фразу для использования для шифрования.
    • Преобразуйте строку в NSData и выполните шифрование AES для нее (см. Предыдущий вопрос).
    • Base64-закодируйте NSData, затем создайте и return и NSString закодированного вывода.
  • Расшифровка
    • Укажите зашифрованную и закодированную строку, а также парольную фразу для дешифрования.
    • Создайте NSData из первой строки, затем декодируйте данные Base64.
    • Выполните дешифрование данных AES, затем создайте и верните NSString.

На самом деле это просто вопрос объединения двух частей вместе и выполнения их в обратном порядке на выходе. Из моего предыдущего ответа вы можете изменить encryptString: withKey: , чтобы выполнить последний шаг и вернуть строку, а также изменить decryptData: withKey: на decryptString: withKey: и принимают две строки. Это довольно просто.

33
ответ дан 1 December 2019 в 01:30
поделиться