#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
посмотрите на википедию для получения более подробной информации. Вам также следует подумать о принятии моего ответа… (большая галочка) 😉