0
iPhoneアプリケーションに格納されているSQLite3データベースの1つのフィールドを暗号化/復号化しようとしています。SQLite3の暗号化/復号化フィールドに問題がある
this questionに記載されているthis categoryを使用しています。それは74657874 20746f20 656e6372 797074
形式でフィールドにデータを保存しない
NSString *key = @"pass123";
NSString *secret = webNote.note;
NSData *plain = [secret dataUsingEncoding:NSUTF8StringEncoding];
NSData *cipher = [plain AES256EncryptWithKey:key];
sqlite3_bind_text(statement, 1, [[cipher description] UTF8String], -1, SQLITE_TRANSIENT);
:暗号化する一方で
、私は次のコードを使用しています。
復号化中に、空白のフィールドが表示されます(私が知っているすべてを試しました)。私は以下のコードを解読に使用しています:
char *noteDet = (char *)sqlite3_column_text(statement, 1);
NSString *key = @"pass123";
NSString *secret = [NSString stringWithUTF8String:noteDet];
NSData *secretData = [secret dataUsingEncoding:NSUTF8StringEncoding];
NSData *clean = [secretData AES256DecryptWithKey:key];
aNote.note = ([[NSString alloc] initWithData:clean encoding:NSUTF8StringEncoding])?[[NSString alloc] initWithData:clean encoding:NSUTF8StringEncoding]:@"";
私は、タイプを変換できません。ご案内ください!
ありがとうございます!
はい。データ型をBLOBに変換してから、バイトとして保存すると役立ちますが、データはランダムに成功して復号化されています。一部の行は空のNULLデータを取得します(何も表示しません)が、再ロード時に取得されます。なぜこれが起こっているのか? – BufferStack
不明..ロギングやデバッガを使用して変数をダンプして各値をチェックしてみてください。また、SQLiteブラウザやコマンドラインを使って、データベースの内容を確認することもできます。 –
私は.. 'NSData * clean = [secretData AES256DecryptWithKey:key];の前に内容がありますが、場合によってはそれ以降にnullとなってしまいます。 答えに感謝します。 – BufferStack