2016-10-20 12 views
0

iOS dev에 익숙하며 db의 보안 데이터 저장소 인코딩 데이터 작업을 시도합니다. RNCryptor "encryptData"가 null을 반환합니다.

나는 여기에 현재의 예를 발견 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'는 (는) nil이 아닙니다. 당신의 실수는'encryptedData'를'NSString'으로 변환하려고 시도하고 있습니다. 'encryptedData'는 UTF-8로 인코딩 된 문자열 데이터가 아닙니다. – rmaddy

+0

@AndyIbanez 오류 검사를 수행했는데 오류가 인쇄되지 않았습니다. – Airagale

답변

4

encryptedDatanil 인 경우 문자열을 나타내지 않는 데이터로 NSString을 만들려고했습니다.

encryptedData을 저장 또는 다른 목적으로 문자열로 변환하려면 데이터를 Base 64로 인코딩 된 표현으로 변환해야합니다. base64EncodedStringWithOptions: 방법으로이 작업을 수행하십시오.

NSString *base64String = [encryptedData base64EncodedStringWithOptions:0]; 

나중에 문자열을 해독 할 물론, 당신은 NSData에 다시베이스 64로 인코딩 된 문자열로 변환해야하고, 그 데이터를 해독합니다.

+0

이전에 언급 한 내용에 앞서 인코딩과 관련이있는 것으로 의심되었지만 인코딩을 결정하는 방법을 잘 모르겠습니다. 도와 줘서 고마워! – Airagale