Кодирование / декодирование с использованием NSData Base64.h

#iphone #cocoa-touch #encryption #base64 #nsdata

#iPhone #cocoa-touch #шифрование #base64 #nsdata

Вопрос:

У меня есть некоторые зашифрованные данные, которые я конвертирую в base64. У меня возникли трудности с преобразованием этой строки обратно в NSData, которую я могу затем использовать для расшифровки.

 NSData *encryptedData = [self encrypt:_secretData key:[self md5data:_key] padding:amp;padding];
//I've tried this with different data too
NSString *cyphertext = [encryptedData base64EncodingWithLineLength:0];
//this works fine
[cyphertext dataUsingEncoding:NSUTF8StringEncoding]; 
//this returns too many bytes ... it's longer than my original data
  

Я использую стандартный «NSData Base64.h» Дейва Вайнера — я нашел его на github.

Есть какие-нибудь советы о том, как преобразовать строку обратно в тот же объект NSData?

Ответ №1:

возможно, с использованием его аналогов?

    (NSData *) dataWithBase64EncodedString:(NSString *) string
  

Обратите внимание, что преобразование в base64 должно быть кратно 4…

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

1. Я все еще получаю значение NSData, которое намного больше, чем мои исходные закодированные NSData, которые я передаю в baseEncodingWithLineLength:. Я ввел инструкции NSLog, и объекты NSData явно имеют разные значения.

2. Я не заметил в первый раз, но base64EncodingWithLineLength:0 выглядит как мерзость…

3. Что вы подразумеваете под кратным 4? Извините, я действительно новичок в этом.

4. Это математически, 256/64=4 посмотрите на википедию для получения более подробной информации. Вам также следует подумать о принятии моего ответа… (большая галочка) 😉