AndroidStudioでSQLiteを暗号化するSQLCipherを使う

AndroidStudioでSQLiteを暗号化するSQLCipherを使う手順の忘備録。

SQLCipherのOpen SourceのページからSQLCipher For Androidをダウンロードします。

sqlcipher-download

ダウンロードしたSQLCipher+for+Android+v3.1.0.zipを展開します。展開すると次のようになっています。これらをAndroid Studioに適切にコピーすればbuild.gradleを編集しなくてもSQLCipherが使えるようになります。

sqlcipher-files

 

ではAndroid Studioにコピーしていきましょう。

src > main の中に「assets」フォルダを作成します。

assetsの中身をAndroid Studioのassetsフォルダ内にコピーします。

libsの中身のうち、jarファイルだけをapp > libs フォルダの中にコピーします。

src > main の中に「jniLibs」フォルダを作成します。

libsの中身のうち、フォルダをsrc > main > jniLibs フォルダの中にコピーします。

コピーが完了すると次のようになっているはずです。

finish-copyed

 

これだけです。以上でSQLCipherの環境が整いました。

では早速動作テストを行ってみましょう。コーディングサンプルにあるHelloSQLCipherActivityを実装してみます。

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import net.sqlcipher.database.SQLiteDatabase;</code>

import java.io.File;

public class HelloSQLCipherActivity extends Activity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_sqlcipher);
        InitializeSQLCipher();
    }
    private void InitializeSQLCipher() {
        SQLiteDatabase.loadLibs(this);
        File databaseFile = getDatabasePath("demo.db");
        databaseFile.mkdirs();
        databaseFile.delete();
        SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);
        database.execSQL("create table t1(a, b)");
        database.execSQL("insert into t1(a, b) values(?, ?)", new Object[]{"one for the money",
                "two for the show"});
    }
    ....

実行するとアプリケーションのフォルダにデータベースが作成されています。

実際にsqliteのデータベースが暗号化され、開けないことを確認します。
SQLite Database Browser で開いたところ、Invalid file format.と表示され、開けないことがわかります。

invalid-file-format

以上でSQLCipherの動作テストは完了です。

参考:AndroidStudioでSQLiteを暗号化するSQLCipherを使う

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です