4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Roomを暗号化してみる

Last updated at Posted at 2021-05-21

#経緯
こちらにもありますが、個人情報を扱う場合、データベースの暗号化の必要がありそうだったため、Roomは暗号化できるのか調べたところSQLCipherというライブラリが目に留まりました。

#参考
AndroidにSQLCipherを導入してみる
Protect your Room database with SQLCipher on Android | by ...

#SQLCipherライブラリの導入
こちらを参考に、build.gradle(app)に追加します。

build.gradle(app)

dependencies {

    implementation "net.zetetic:android-database-sqlcipher:4.4.2"
    implementation "androidx.sqlite:sqlite:2.1.0"
}

データベースを操作する部分

UserDatabase.kt

package com.example.sample

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import net.sqlcipher.database.SQLiteDatabase
import net.sqlcipher.database.SupportFactory

@Database(entities = [User::class], version = 2, exportSchema = false )
abstract class UserDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao

    companion object{
        fun buildDatabase(context: Context): UserDatabase{
            return Room.databaseBuilder(
                    context,
                    UserDatabase::class.java,
                    "user.db"
            ).openHelperFactory(SupportFactory(SQLiteDatabase.getBytes("test123".toCharArray())))
                    .allowMainThreadQueries()
                    .build()
        }
    }
}


#ビルドした際のDBファイルの場所
公式のドキュメントにある通り、
DeviceFileExplorerにて/data/data/app_name/databases内にDBファイルが作成される
(私の場合は/data/data/com.example.rworksample00026/databasesでした)
作成されたファイルをデスクトップとかにダウンロードします。

WS001157.JPG

WS001156.JPG

WS001158.JPG

WS001159.JPG

#データベースの中身の確認
DB Browser for sqliteにてSQLcipher側を起動してパスワードを入力すると中身が確認できます。(中身のデータがあればデータも確認できます。)

WS001160.JPG

WS001161.JPG

WS001162.JPG

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?