Usando SQLCipher con el archivo de base de datos SQLite enviado sqlite

Tengo un archivo de base de datos restablecido en el archivo de assets .

¿Cómo puedo utilizar SQLCipher para cifrar la base de datos en android?

Esto va a ser un poco complicado. Dado que el formato de archivo de base de datos es diferente entre SQLite y SQLCipher para Android, y ya que desea enviar una base de datos sin cifrar, tendrá que hacer algunas cosas.

Primero, haría que SQLiteAssetHelper vaya, para entregar la base de datos sin cifrar a su entorno.

A continuación, utilice SQLCipher estándar para Android para crear una base de datos vacía pero cifrada.

A continuación, tendrá que implementar el código para copiar los datos de la base de datos empaquetada pero no encriptada e insertarla en la base de datos vacía pero cifrada.

Una vez que todo está hecho, puede cerrar y eliminar la base de datos empaquetada-pero-sin cifrar y sólo usar el cifrado.

Esto podría hacer una extensión útil a SQLiteAssetHelper , algún día …

Cubren cómo usar SQLCipher en detalle en su sitio web aquí

Básicamente, usted descarga sus binarios, los configura en su proyecto y luego usa su clase SQLiteDatabase en lugar de la clase android SQLiteDatabase estándar .:

  import info.guardianproject.database.sqlcipher.SQLiteDatabase; 

El siguiente extracto de código se puede utilizar para crear varias tablas en una base de datos SQLite Cipher:

Utilice estas importaciones:

 import java.sql.SQLException; import net.sqlcipher.database.SQLiteDatabase; import net.sqlcipher.database.SQLiteOpenHelper; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.util.Log; /** Helper to the database, manages versions and creation */ public class DBAdapter extends SQLiteOpenHelper { private static final String DATABASE_NAME = "Test"; private static final int DATABASE_VERSION = 1; // Table name public static final String TABLE_1 = "Table1"; public static final String TABLE_2 = "Table2"; // Column names for Table1 table static final String KEY_PASSWORD = "password"; static final String KEY_USER = "user"; // Column names for Table2 table static final String KEY_EVENT = "event"; static final String KEY_USERNAME = "username"; public DBAdapter(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String sql1 = "create table " + Table_1 + " (" + KEY_USER + " text primary key, " + KEY_PASSWORD + " text not null);"; String sql2 = "create table " + Table_2 + " (" + KEY_EVENT + " text primary key, " + KEY_USERNAME + " text not null FOREIGN KEY(" + KEY_USERNAME + ") REFERENCES " + TABLE_1 + "(" + KEY_USER + "));"; db.execSQL(sql1); db.execSQL(sql2); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion >= newVersion){ return; } String sql = null; if (oldVersion == 1) sql = "alter table " + TABLE_1 + " add note text;"; if (oldVersion == 2) sql = ""; Log.d("EventsData", "onUpgrade : " + sql); if (sql != null) db.execSQL(sql); } public Cursor getAllUsers(String username, SQLiteDatabase db){ return db.query(TABLE_1, ...); } public Cursor getAllEvents(String event, SQLiteDatabase db){ return db.query(TABLE_2, ...); } } 

Ahora puede hacer todos los métodos CRUD para ambas tablas. Sólo asegúrese de que cada método tiene un SQLiteDatabase como un argumento como se muestra en el método getAllUsers() .

  • Sqlcipher 'open' performance con cordova y Cordova-SQLitePlugin
  • Android No se puede cifrar la base de datos utilizando sqlcipher usando greendao
  • ¿Cifrar la base de datos SQLite sin aumentar el tamaño de la aplicación?
  • CREATE TABLE android_metadata falló al volver a abrir sqlcipher DB
  • ¿Puede alguien explicarme el paso de compilación en la creación de un archivo binario sqlcipher?
  • ¿Cómo empezar con SQLCipher para Android?
  • SQLCipher para Android: icudt46l.zip realmente necesario?
  • Android SQCipher ¿Necesito cerrar la base de datos?
  • Net.sqlcipher.database.SQLiteException: no es un error:
  • Android Proguard SqlCipher NoClassDefFoundError
  • Cifrar la base de datos sqlite Android:
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.