Suche…


Einführung

SQLite ist bereits eine beliebte API für die dauerhafte Speicherung von Daten in iOS-Apps. Die Entwicklung liegt also auf der Hand. Als Programmierer arbeiten Sie mit einer stabilen, gut dokumentierten API, für die in Objective-C viele gute Wrapper verfügbar sind, beispielsweise FMDB und Encrypted Core Data. Alle Sicherheitsbedenken sind vom Anwendungscode sauber entkoppelt und werden vom zugrunde liegenden Framework verwaltet.

Bemerkungen

  1. Öffnen Sie das Terminal, wechseln Sie in das Stammverzeichnis Ihres Projekts und checken Sie den SQLCipher-Projektcode mithilfe von Git aus:
 $ git clone https://github.com/sqlcipher/sqlcipher.git
  1. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie "Dateien zu" Meine App hinzufügen "" (die Bezeichnung hängt vom Namen Ihrer App ab). Da wir SQLCipher direkt in den gleichen Ordner wie Ihre iOS-App geklont haben, sollte ein sqlcipher-Ordner in Ihrem Stammprojektordner angezeigt werden. Öffnen Sie diesen Ordner und wählen Sie sqlcipher.xcodeproj aus

Geben Sie hier die Bildbeschreibung ein

  1. Wählen Sie den Bereich Build-Einstellungen aus. Geben Sie im Suchfeld "Header Search Paths" ein. Doppelklicken Sie auf das Feld unter der Zielspalte und fügen Sie den folgenden Pfad hinzu: $ (PROJECT_DIR) / sqlcipher / src

  2. Beginnen Sie, "Other Linker Flags" in das Suchfeld einzugeben, bis die Einstellung angezeigt wird, doppelklicken Sie, um sie zu bearbeiten, und fügen Sie den folgenden Wert hinzu:

  3. Beginnen Sie, "Other C Flags" in das Suchfeld einzugeben, bis die Einstellung angezeigt wird, doppelklicken Sie, um sie zu bearbeiten, und fügen Sie im Popup den folgenden Wert hinzu:

  4. Erweitern Sie Zielabhängigkeiten und klicken Sie auf die Schaltfläche + am Ende der Liste. Wählen Sie im sich öffnenden Browser das statische Bibliotheksziel sqlcipher aus :

Geben Sie hier die Bildbeschreibung ein

  1. Erweitern Sie Link Binary With Libraries, klicken Sie auf die Schaltfläche + am Ende der Liste und wählen Sie die Bibliothek libsqlcipher.a aus .

Geben Sie hier die Bildbeschreibung ein

  1. Fügen Sie schließlich auch unter Verknüpfung mit Bibliotheken Security.framework hinzu .

Integration von Code:

Integration zum Öffnen der Datenbank mit Passwort.

-(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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow