Per utilizzare correttamente SQL Cipher per Android devi utilizzare librerie esterne e modificare parte del codice che interagisce con il tuo DB.
-
Questi devono essere prima aggiunti al tuo progetto (all'interno della cartella libs.) Fai riferimento qui per ottenerli:http://sqlcipher.net/sqlcipher-for-android/
-
In secondo luogo è necessario aggiungere il file icudt4dl.zip alla cartella delle risorse, questo Zip viene fornito con le librerie di crittografia SQL.
-
Fare clic con il pulsante destro del progetto, andare su proprietà, quindi percorso di compilazione Java, quindi includere librerie come commons-codec.jar, guava-r09.jar, sqlcipher.jar. Fatto ciò, esegui una pulizia della build.
-
Quindi all'interno della tua app, invece di importare android.database.sqlite, importerai import net.sqlcipher.database
-
Modifica qualsiasi codice che interagisce con il DB, ad esempio:
SQLiteDatabase.loadLibs(contesto);
Stringa dbPath =this.getDatabasePath("dbname.db").getPath();
SQLiteDatabase db =SQLiteDatabase.openOrCreateDatabase(dbPath,"dbPassword", null);
-
Verifica che il database sia crittografato, vai alla prospettiva DDMS in Eclipse, fai clic sulla scheda Esplora file, vai a dati/dati/, fai clic sul file .db e seleziona Ottieni file dispositivo, salvalo sul desktop e aprilo con un testo editore. Cerca i valori di testo normale che hai inserito nel tuo database, se riesci ancora a leggerli, qualcosa è andato storto.
Potrebbe anche essere una buona idea controllare alcuni tutorial SQLite prima di implementare SQL Cipher. Ne viene menzionato uno buono qui:Database sqlite Android - da dove comincio visto che il tutorial è andato per il blocco note?
Aggiorna
Questa risposta è obsoleta ora ed Eclipse è praticamente deprecato per lo sviluppo Android. Di recente ho dovuto creare un'app utilizzando SQLCipher su Android Studio per Android 5 + 6 e questi sono i passaggi che ho seguito.
In Android Studio, puoi includere SQLCipher come dipendenza nel tuo file di build. Aggiorna le tue dipendenze in build gradle per includere la seguente riga:
dependencies{
compile 'net.zetetic:android-database-sqlcipher:[email protected]'
}
Puoi tenerti aggiornato con le versioni qui:https://mvnrepository.com/artifact/net.zetetic/android-database-sqlcipher
La mia app non sarebbe stata compilata a meno che non avessi rimosso i file SQLCipher nella cartella lib e nella cartella delle risorse, ma in seguito ha funzionato come previsto. Dopo aver apportato queste modifiche, esegui una build/clean e controlla se funziona.
Gli stessi passaggi sopra menzionati per la modifica del codice sono ancora validi.