サーチ…
前書き
SQLiteはすでにiOSアプリケーションの永続的なデータストレージ用に普及しているAPIなので、開発の上には明らかです。プログラマーとしては、FMDBや暗号化されたコアデータのようにObjective-Cで利用可能な多くの良いラッパーを持っている安定した、よく文書化されたAPIを使用して作業します。すべてのセキュリティ上の問題は、アプリケーションコードから完全に切り離され、基盤となるフレームワークによって管理されます。
備考
- ターミナルを開き、プロジェクトのルートディレクトリに移動し、Gitを使用してSQLCipherプロジェクトコードをチェックアウトします。
$ git clone https://github.com/sqlcipher/sqlcipher.git
- プロジェクトを右クリックし、「アプリケーションを「マイアプリ」に追加」を選択します(ラベルはアプリの名前によって異なります)。 SQLCipherをiOSアプリケーションと同じフォルダに直接クローンしたので、ルートプロジェクトフォルダにsqlcipherフォルダがあるはずです。このフォルダを開き、 sqlcipher.xcodeprojを選択します。
[ビルド設定]ペインを選択します。検索フィールドに「ヘッダー検索パス」と入力します。ターゲット列の下のフィールドをダブルクリックし、次のパスを追加します。 $(PROJECT_DIR)/ sqlcipher / src
検索フィールドに "Other Linker Flags"と入力して設定が表示されるまでダブルクリックして編集し、次の値を追加します: $(BUILT_PRODUCTS_DIR)/libsqlcipher.a
検索フィールドに「その他のCフラグ」と入力して設定が表示されるまでダブルクリックして編集し、ポップアップで次の値を追加します: -DSQLITE_HAS_CODEC
Target Dependenciesを展開し、リストの最後にある+ボタンをクリックします。表示されたブラウザで、 sqlcipherスタティック・ライブラリ・ターゲットを選択します。
- Link Binary with Librariesを展開し、リストの最後にある+ボタンをクリックし、 libsqlcipher.aライブラリを選択します。
- 最後に、「ライブラリとのリンク」の下にも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