У меня возникают проблемы с декодированием строки Base64. Вот относящийся код (в пределах категории файла):Кодирование/декодирование базы 64
- (NSString *)base64DecodedString {
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:self options:0];
NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSASCIIStringEncoding];
NSLog(@"Encoded String: %@\n"
"Decoded String: %@\n"
"Reencoded Check: %@\n", self, decodedString, [decodedString base64EncodedString]);
return decodedString;
}
- (NSString*)base64EncodedString {
NSData *encodedData = [self dataUsingEncoding:NSASCIIStringEncoding];
NSString *encodedString = [encodedData base64EncodedStringWithOptions:0];
return encodedString;
}
Использование NSASCIIStringEncoding
, при вызове метода base64DecodedString
категории, я получаю следующий результат:
Encoded String: XMEBbbUGO4wuZ8Eljx6x8Q==
Decoded String: \Ámµ;.gÁ%±ñ
Reencoded Check: (null)
Encoded String: NBbA3SzI5j8ioOTeQC5WxNvEFNg0WFy4nRjmCSdypCI=
Decoded String: 4ÀÝ,Èæ?" äÞ@.VÄÛÄØ4X\¸æ 'r¤"
Reencoded Check: (null)
Используя один и тот же код, приведенный выше, но с NSUTF8StringEncoding
Я получаю следующий результат:
Encoded String: oP6u7jErDp4KHzC6WmzHEw==
Decoded String: (null)
Reencoded Check: (null)
Encoded String: qjne07HA4PFIFrwTP9E/ejK6XtWoFtbgdDTpL8wmfgY=
Decoded String: (null)
Reencoded Check: (null)
Любые идеи относительно того, что происходит? В любом случае декодированная строка неверна, и проверка перекодирования не создает исходную строку.
Что вы * ожидаете * «расшифрованной строки»? Данные в закодированных строках не выглядят как текст; он не может быть представлен как строка ASCII (или UTF8). – duskwuff
@duskwuff Я использую это как ключ для дешифрования другого файла. Я не уверен, что ключ * предполагается *, но используя результат выше, поскольку ключ не дает допустимого файла. Я успешно расшифровал другой файл, используя известный ключ с той же функцией, поэтому я предполагаю, что генерируемый ключ неверен. Другая возможность заключается в том, что способ шифрования файла изменился. – nmock
@duskwuff, в любом случае, учитывая входной код Base64, мне интересно, как вы его правильно декодируете? – nmock