Sök…


Introduktion

SQLite är redan ett populärt API för ihållande datalagring i iOS-appar, så uppsidan för utveckling är uppenbar. Som programmerare arbetar du med ett stabilt, väldokumenterat API som råkar ha många bra omslag tillgängliga i Objekt-C, såsom FMDB och Encrypted Core Data. Alla säkerhetsproblem kopplas av från applikationskoden och hanteras av det underliggande ramverket.

Anmärkningar

  1. Öppna terminalen, växla till projektets rotkatalog och kolla in SQLCipher-projektkoden med Git:
 $ git clone https://github.com/sqlcipher/sqlcipher.git
  1. Högerklicka på projektet och välj "Lägg till filer till" Min app "" (etiketten varierar beroende på appens namn). Eftersom vi klonade SQLCipher direkt i samma mapp som din iOS-app bör du se en sqlcipher-mapp i din rotprojektmapp. Öppna den här mappen och välj sqlcipher.xcodeproj

ange bildbeskrivning här

  1. Välj fönstret Bygginställningar. I sökfältet skriver du in "Header Search Paths". Dubbelklicka på fältet under målkolumnen och lägg till följande sökväg: $ (PROJECT_DIR) / sqlcipher / src

  2. Börja skriva "Andra länkflaggor" i sökfältet tills inställningen visas, dubbelklicka för att redigera den och lägg till följande värde: $ (BUILT_PRODUCTS_DIR) /libsqlcipher.a

  3. Börja skriva "Andra C-flaggor" i sökfältet tills inställningen visas, dubbelklicka för att redigera den och lägga till följande värde i popup-fönstret : -DSQLITE_HAS_CODEC

  4. Expandera målberoende och klicka på + -knappen i slutet av listan. I webbläsaren som öppnas väljer du det statiska biblioteksmålet sqlcipher :

ange bildbeskrivning här

  1. Expandera Link Binary With Libraries, klicka på + -knappen i slutet av listan och välj biblsqlcipher.a- biblioteket.

ange bildbeskrivning här

  1. Till sist, även under Link With Libraries, lägg till Security.framework .

Integration av kod:

Integration för att öppna databasen med lösenord.

-(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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow