サーチ…


前書き

SQLiteはすでにiOSアプリケーションの永続的なデータストレージ用に普及しているAPIなので、開発の上には明らかです。プログラマーとしては、FMDBや暗号化されたコアデータのようにObjective-Cで利用可能な多くの良いラッパーを持っている安定した、よく文書化されたAPIを使用して作業します。すべてのセキュリティ上の問題は、アプリケーションコードから完全に切り離され、基盤となるフレームワークによって管理されます。

備考

  1. ターミナルを開き、プロジェクトのルートディレクトリに移動し、Gitを使用してSQLCipherプロジェクトコードをチェックアウトします。
 $ git clone https://github.com/sqlcipher/sqlcipher.git
  1. プロジェクトを右クリックし、「アプリケーションを「マイアプリ」に追加」を選択します(ラベルはアプリの名前によって異なります)。 SQLCipherをiOSアプリケーションと同じフォルダに直接クローンしたので、ルートプロジェクトフォルダにsqlcipherフォルダがあるはずです。このフォルダを開き、 sqlcipher.xcodeprojを選択します

ここに画像の説明を入力

  1. [ビルド設定]ペインを選択します。検索フィールドに「ヘッダー検索パス」と入力します。ターゲット列の下のフィールドをダブルクリックし、次のパスを追加します。 $(PROJECT_DIR)/ sqlcipher / src

  2. 検索フィールドに "Other Linker Flags"と入力して設定が表示されるまでダブルクリックして編集し、次の値を追加します: $(BUILT_PRODUCTS_DIR)/libsqlcipher.a

  3. 検索フィールドに「その他のCフラグ」と入力して設定が表示されるまでダブルクリックして編集し、ポップアップで次の値を追加します: -DSQLITE_HAS_CODEC

  4. Target Dependenciesを展開し、リストの最後にある+ボタンをクリックします。表示されたブラウザで、 sqlcipherスタティック・ライブラリ・ターゲットを選択します。

ここに画像の説明を入力

  1. Link Binary with Librariesを展開し、リストの最後にある+ボタンをクリックし、 libsqlcipher.aライブラリを選択します。

ここに画像の説明を入力

  1. 最後に、「ライブラリとのリンク」の下にもSecurity.frameworkを追加します。

コードの統合:

パスワードを使用してデータベースを開くための統合。

-(void)checkAndOpenDB{
    sqlite3 *db;
    NSString *strPassword = @"password";

        if (sqlite3_open_v2([[databaseURL path] UTF8String], &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQLITE_OK) {
            const char* key = [strPassword UTF8String];
            sqlite3_key(db, key, (int)strlen(key));
            if (sqlite3_exec(db1, (const char*) "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) {
                NSLog(@"Password is correct, or a new database has been initialized");
            } else {
                NSLog(@"Incorrect password!");
            }
            sqlite3_close(db);
        }  
}

- (NSURL *)databaseURL
{
    NSArray *URLs = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
    NSURL *directoryURL = [URLs firstObject];
    NSURL *databaseURL = [directoryURL URLByAppendingPathComponent:@"database.sqlite"];
    return  databaseURL;
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow