2013-07-19 8 views
10

私は、既存の機能しているデータベース設定でアンドロイドアプリケーションで暗号化を実装することで、賢明なデータを保護しようとしています。SQLiteOpenHelperを使用するときにSQLCipherを実装する方法

私はこのチュートリアル(http://sqlcipher.net/sqlcipher-for-android/)に従おうとしましたが、私は暗号のgoogleグループを含む多くのforunsを閲覧しました。しかし、私はまだSQLCipherがどのように動作するのか、私のニーズに対応するためにコードをどのように適合させるべきかを明確に理解していません。

私はこのアンドロイドのデータベース実装に従っています:http://www.vogella.com/articles/AndroidSQLite/#databasetutorial_databaseは、SQLiteOpenHelperクラスの拡張とCRUDメソッドを格納する別のクラスを持っていることを意味します。

この場合、SQLCipherはどのように使用しますか?パスワードはどこで定義しますか? loadLibs(コンテキスト)はどこで使うべきですか?主なアクティビティでのみですか?または、データベースにアクセスするすべてのアクティビティでですか?

私はほとんど私が感じている、私はちょうどこれを把握する最後のプッシュが必要です:P 事前に感謝!

+0

"パスワードはどこで定義しますか?" - 非常に良い質問、sqlcipherヘルパーは、データベースを作成しますが、パスワードのための任意のパラメータまたは何も持っていないようです。同じ問題が発生しました。 – Ostkontentitan

答えて

18

この場合、SQLCipherはどのように使用しますか?

正常な通常のSQLの実装とまったく同じです。

ここでパスワードを定義する必要がありますか?

あなたが最初にこのようにそれを得るとき、それは、データベースを作成しますSQLiteHelperを使用している場合、それはこのパスワードを使用してデータベースを作成します呼び出す最初に

helper.getWriteableDatabase("myPassword"); 

。 upcoingコールでは、このパスワードでのみ機能します。

(私はソースに行ったときのことを考え出した!https://github.com/sqlcipher/android-database-sqlcipher/blob/master/src/net/sqlcipher/database/SQLiteOpenHelper.java、方法getWriteableDatabase(文字列PW)が をチェックアウト)私はloadLibs(コンテキスト)を使用する必要があります

?あなたはhelper.getWriteableDatabase("myPassword");最初の時間を呼び出す直前に

+0

プレーンコンテンツプロバイダから暗号化コンテンツプロバイダ(SQLCipherを使用)へのアプリケーションのアップグレードをどのように処理しますか?これらの変更でアプリケーションをアップグレードしようとすると、アプリがクラッシュします。 – Kaps

3

この場合、SQLCipherはどのように使用しますか?

これは要約では答えることができません。主にSQLiteを使うのと同じ方法で使用します。

ここでパスワードを定義する必要がありますか?

あなたはそれをユーザーから入手する必要があります。

loadLibs(context)はどこで使用しますか?主なアクティビティでのみですか?または、データベースにアクセスするすべてのアクティビティでですか?

プロセスごとに1回で十分です(実際には、おそらく問題が多い可能性があります)。 SQLCipherデータベースにContentProviderを使用している場合は、ContentProvideronCreate()にあるloadLibs()を呼び出してください。カスタムApplicationを使用している場合は、ApplicationonCreate()loadLibs()と電話してください。

+0

"これは抽象的には答えがつかず、あなたはSQLiteを使うのと同じように使うでしょう。" 私は抽象ではなくSQLiteOpenHelperと統合する方法を尋ねています。しかし、残りのおかげで。 – JZweige

+0

@JZweige:Android用のSQLCipherには、独自の 'SQLiteOpenHelper'があります。これは、標準のAndroidの一部である 'SQLiteOpenHelper'を使用するのとほぼ同じ方法で使用します。 – CommonsWare

+0

私は、インポートを置き換えてloadLibs()を追加するだけでいいですか?興味深いことにそれを試して、いくつかのテストをして、私はそれがどのように行くか見るでしょう。 – JZweige

関連する問題