2016-10-20 5 views
0

Новое в iOS dev, пытаясь работать с данными кодирования для безопасного хранения данных в db.RNCryptor "encryptData", возвращающий нуль

Я нашел текущий пример здесь: https://github.com/RNCryptor/RNCryptor-objc

Это мой код.

NSString * aPassword [email protected]"tempkey"; 

NSData *data = [@"Data" dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *error; 
NSData *encryptedData = [RNEncryptor encryptData:data 
            withSettings:kRNCryptorAES256Settings 
             password:aPassword 
              error:&error]; 


NSLog(@"Data: %@", [[NSString alloc] initWithData:encryptedData encoding:NSUTF8StringEncoding]); 

Мой журнал

2016-10-20 11:41:52.662 BlueBoard[57245:10027277] Data: (null) 

Я пропускаю шаг в этом процессе? Я подтвердил, что это значение null, потому что его db также хранится как null.

+0

Используйте параметр 'error', чтобы узнать, что пошло не так. –

+1

'encryptedData' не нуль. Ваша ошибка пытается преобразовать 'encryptedData' в' NSString'. 'encryptedData' не является строковыми данными в кодировке UTF-8. – rmaddy

+0

@AndyIbanez У меня была проверка на наличие ошибок, и она не печатала ошибку. – Airagale

ответ

4

Ваша проблема не в том, что encryptedData is nil, это то, что вы пытаетесь создать NSString из данных, которые не представляют собой строку.

Если вы хотите конвертировать encryptedData в строку для хранения или в других целях, вы должны преобразовать данные в кодированное представление Base 64. Сделайте это с помощью метода base64EncodedStringWithOptions:.

NSString *base64String = [encryptedData base64EncodedStringWithOptions:0]; 

Конечно, если вы хотите, чтобы расшифровать строку позже, вам нужно будет преобразовать Base 64 закодированную строку обратно в NSData, а затем расшифровать эти данные.

+0

Я подозревал, что это как-то связано с кодировкой, прежде чем вы упомянули в комментарии ранее, но я не был уверен, как определить, какую кодировку. Спасибо за помощь! – Airagale

Смежные вопросы