Как реализовать SQLCipher при использовании SQLiteOpenHelper

Я пытаюсь обеспечить некоторые разумные данные, внедряя шифрование в уже существующую и функционирующую базу данных в приложении Android.

Я попытался следовать этому руководству ( http://sqlcipher.net/sqlcipher-for-android/ ), и я просмотрел множество foruns, включая группу google для Cipher. Тем не менее, я до сих пор не понимаю, как работает SQLCipher и как я должен адаптировать свой код для удовлетворения моих потребностей.

Я следую этой реализации баз данных в android: http://www.vogella.com/articles/AndroidSQLite/#databasetutorial_database , что означает, что у меня есть расширение класса SQLiteOpenHelper и другого класса для хранения методов CRUD.

В этой ситуации, как я должен использовать SQLCipher? Где я должен определить пароль? Где я должен использовать loadLibs (контекст)? Только в основном мероприятии? Или в каждом действии, которое обращается к базе данных?

Я чувствую, что я почти там, мне просто нужен последний толчок, чтобы понять это: P Спасибо заранее!

В этой ситуации, как я должен использовать SQLCipher?

Точно как обычная нормальная реализация sql.

Где я должен определить пароль?

Если вы используете SQLiteHelper, он создаст базу данных, когда вы сначала ее получите следующим образом:

helper.getWriteableDatabase("myPassword"); 

При первом вызове он создаст базу данных с помощью этого пароля. При вызове upcoing он будет работать только с этим паролем.

(Понял, что, когда я пошел к источнику: https://github.com/sqlcipher/android-database-sqlcipher/blob/master/src/net/sqlcipher/database/SQLiteOpenHelper.java , проверьте метод getWriteableDatabase (String pw ) там! )

Где я должен использовать loadLibs (контекст)?

Прямо перед вызовом helper.getWriteableDatabase("myPassword"); первый раз!

В этой ситуации, как я должен использовать SQLCipher?

Это невозможно ответить абстрактно. Вы использовали бы его в основном так же, как вы используете SQLite.

Где я должен определить пароль?

Вы должны получить его от пользователя.

Где я должен использовать loadLibs (контекст)? Только в основном мероприятии? Или в каждом действии, которое обращается к базе данных?

Один раз за процесс достаточно (на самом деле, может быть, может быть и проблема). Если вы используете ContentProvider для своей базы данных SQLCipher, вызовите loadLibs() в onCreate() ContentProvider . Если вы используете собственное Application , вызовите loadLibs() в onCreate() Application .