2016-10-20 9 views
0

iOSデベロッパーに新しく、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であることを確認しました。

+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