Получить зашифрованный текст в виде NSString вместо NSData

#ios #aes

#iOS #aes

Вопрос:

Как я могу получить зашифрованные данные в виде строки вместо объекта NSData в Objectice -C? Мне нужно отправить этот зашифрованный текст в> метод net, и процедуры дешифрования обрабатываются.Чистый код. Или кто-нибудь может помочь мне зашифровать текст в iOS и расшифровать его в> net?

Добавление из комментария — Zaph
Я использую этот код:

 StringEncryption *crypto = [[StringEncryption alloc] init];
NSData *_secretData = [SearchKey dataUsingEncoding:NSUTF8StringEncoding];
CCOptions padding = kCCOptionPKCS7Padding;
NSData *key = [_key dataUsingEncoding:NSUTF8StringEncoding];
NSData *encryptedData = [crypto encrypt:_secretData key:key padding:amp;padding];
 

Мне нужно отправить EncryptedData в .Net. Но я не знаю, как отправить NSData.Метод Net, поэтому я попытался преобразовать эти EncryptedData в NSString , к сожалению, он дает мне ноль. Я пробовал использовать base64EncodedStringWithOptions, он также выдает ошибку при расшифровке.

Комментарии:

1. Конечно, помощь доступна здесь. Написание кода — это не так. Изучайте, исследуйте, пишите как можно лучше. Если это не сработает, вернитесь сюда с кодом проблемы, и помощь должна быть доступна.

2. При шифровании данных создаются 8-битные байты, а не символы ASCII. Таким образом, требуется некоторая кодировка, обычно это Base64.

3. Зашифрованные данные должны обрабатываться в виде 8-битных байтов, а не обычных символов. Если вы попытаетесь обработать данные как символы, вы неизбежно испортите их, и они не будут расшифрованы. Если вам нужна символьная строка для передачи, закодируйте 8-битные байты в Base64.

4. Что такое класс StringEncryption? Что .новый класс? Что не показано, так это режим и, если CBC (он должен использовать CBC move), iv и длина ключа. Ключ не должен быть строкой (паролями), а ключ должен быть правильной длины. Итак, как эти вещи обрабатываются в StringEncryption и .net?

Ответ №1:

Вы можете преобразовать NSData в строку base 64. Для iOS 7 NSData имеет следующие два метода: (прямые цитаты из Apple doc)

base64EncodedDataWithOptions : Создайте NSData в кодировке Base-64, UTF-8 из содержимого получателя, используя указанные параметры.

base64EncodedStringWithOptions : Создайте NSString в кодировке Base-64 из содержимого получателя, используя указанные параметры.

Комментарии:

1. Я использую этот код StringEncryption *crypto = [[StringEncryption alloc] init] ; NSData *_secretData = [SearchKey dataUsingEncoding:NSUTF8StringEncoding]; CCOptions padding =kCCOptionPKCS7Padding; NSData *EncryptedData = [шифрование шифрования: _secretData ключ:[_key dataUsingEncoding:NSUTF8StringEncoding] заполнение: amp;padding]; и мне нужноотправьте зашифрованные данные в .Net. Но я не знаю, как отправить NSData. Чистый метод, поэтому я попытался преобразовать эти зашифрованные данные в NSString, к сожалению, он дает мне ноль.я пробовал с base64EncodedStringWithOptions, он также выдает ошибку при расшифровке….

2. Добавлен комментарий к вопросу для форматирования и продолжения вопроса.