Buscar..


Introducción

SQLite ya es una API popular para el almacenamiento de datos persistentes en aplicaciones iOS, por lo que la ventaja para el desarrollo es obvia. Como programador, trabajas con una API estable y bien documentada que tiene muchos envoltorios buenos disponibles en Objective-C, como FMDB y datos encriptados. Todos los problemas de seguridad están claramente desconectados del código de la aplicación y son administrados por el marco subyacente.

Observaciones

  1. Abra la Terminal, cambie al directorio raíz de su proyecto y verifique el código del proyecto SQLCipher usando Git:
 $ git clone https://github.com/sqlcipher/sqlcipher.git
  1. Haga clic derecho en el proyecto y elija "Agregar archivos a" Mi aplicación "" (la etiqueta variará según el nombre de su aplicación). Ya que clonamos SQLCipher directamente en la misma carpeta que su aplicación iOS, debería ver una carpeta sqlcipher en su carpeta de proyecto raíz. Abra esta carpeta y seleccione sqlcipher.xcodeproj

introduzca la descripción de la imagen aquí

  1. Seleccione el panel Crear configuración. En el campo de búsqueda, escriba "Rutas de búsqueda de encabezado". Haga doble clic en el campo debajo de la columna de destino y agregue la siguiente ruta: $ (PROJECT_DIR) / sqlcipher / src

  2. Comience a escribir "Otros indicadores de vinculador" en el campo de búsqueda hasta que aparezca la configuración, haga doble clic para editarlo y agregue el siguiente valor: $ (BUILT_PRODUCTS_DIR) /libsqlcipher.a

  3. Comience a escribir "Otros indicadores C" en el campo de búsqueda hasta que aparezca la configuración, haga doble clic para editarlo y, en la ventana emergente, agregue el siguiente valor: -DSQLITE_HAS_CODEC

  4. Expanda las Dependencias de destino y haga clic en el botón + al final de la lista. En el navegador que se abre, seleccione el destino de la biblioteca estática sqlcipher :

introduzca la descripción de la imagen aquí

  1. Expanda Enlace binario con bibliotecas, haga clic en el botón + al final de la lista y seleccione la biblioteca libsqlcipher.a .

introduzca la descripción de la imagen aquí

  1. Finalmente, también en Enlace con bibliotecas, agregue Security.framework .

Integración de código:

Integración para abrir la base de datos mediante contraseña.

-(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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow