NSXMLparse для извлечения определенных значений из длинной строки. (Пара вопросов.) - PullRequest
1 голос
/ 14 сентября 2011

Извините, если этот вопрос задавался ранее, если да, укажите мне правильный ответ. (Я не смог найти ответ.)

Мой вопрос:

У меня есть XML, пришедший из NSUrl, и мне нужно иметь возможность проанализировать его соответствующим образом, я буду получать ответы с полевыми преступниками, такими как ().

Могу ли я настроить его для поискасловарь по ключевым словам и разбирать их из XML?Если так, что было бы хорошим началом для изучения этого?

Также возможно ли сохранить ответы и зашифровать их, пока мне не понадобится использовать их в другом представлении?если так, то как лучше всего шифровать на стороне IOS?

любое руководство в правильном направлении замечательно !!Я не прошу, чтобы кто-то ответил на все из них, но было бы хорошо, спасибо!

1 Ответ

1 голос
/ 14 сентября 2011

Способ - (BOOL)writeToFile:(NSString *)path options:(NSDataWritingOptions)mask error:(NSError **)errorPtr имеет NSDataWritingFileProtection опции, которые будут шифровать данные для вас, но вы не можете контролировать их ключ шифрования.

Для шифрования используйте CommonCrypro (часть iOS), aes128, cbc. Но реальный вопрос в том, как вы надежно сохраните ключ шифрования?

Вот метод шифрования / дешифрования:

+ (NSData *)doCipher:(NSData *)dataIn
                  iv:(NSData *)iv
                 key:(NSData *)symmetricKey
             context:(CCOperation)encryptOrDecrypt
{
    CCCryptorStatus ccStatus   = kCCSuccess;
    size_t          cryptBytes = 0;    // Number of bytes moved to buffer.
    NSMutableData  *dataOut    = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128];

    ccStatus = CCCrypt( encryptOrDecrypt, // kCCEncrypt or kCCDecrypt
                       kCCAlgorithmAES128,
                       kCCOptionPKCS7Padding,
                       symmetricKey.bytes, 
                       kCCKeySizeAES128,
                       iv.bytes,
                       dataIn.bytes,
                       dataIn.length,
                       dataOut.mutableBytes,
                       dataOut.length,
                       &cryptBytes);

    if (ccStatus != kCCSuccess) {
        NSLog(@"CCCrypt status: %d", ccStatus);
    }

    dataOut.length = cryptBytes;

    return dataOut;
}
...