Room을 암호화해보세요
경위
여기 에도 있습니다만, 개인정보를 취급하는 경우, 데이타베이스의 암호화가 필요할 것 같았기 때문에, 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였습니다)
생성된 파일을 바탕화면으로 다운로드합니다.
데이터베이스 내용 확인
DB Browser for sqlite 에서 SQLcipher측을 기동해 패스워드를 입력하면 내용을 확인할 수 있습니다. (내용 데이터가 있으면 데이터도 확인할 수 있습니다.)
Reference
이 문제에 관하여(Room을 암호화해보세요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bm0/items/6838dcc9561cb75d213a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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였습니다)
생성된 파일을 바탕화면으로 다운로드합니다.
데이터베이스 내용 확인
DB Browser for sqlite 에서 SQLcipher측을 기동해 패스워드를 입력하면 내용을 확인할 수 있습니다. (내용 데이터가 있으면 데이터도 확인할 수 있습니다.)
Reference
이 문제에 관하여(Room을 암호화해보세요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bm0/items/6838dcc9561cb75d213a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
dependencies {
implementation "net.zetetic:android-database-sqlcipher:4.4.2"
implementation "androidx.sqlite:sqlite:2.1.0"
}
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()
}
}
}
공식 문서 에 있는 대로,
DeviceFileExplorer에서/data/data/app_name/databases에 DB 파일을 만듭니다.
(내 경우에는/data/data/com.example.rworksample00026/databases였습니다)
생성된 파일을 바탕화면으로 다운로드합니다.
데이터베이스 내용 확인
DB Browser for sqlite 에서 SQLcipher측을 기동해 패스워드를 입력하면 내용을 확인할 수 있습니다. (내용 데이터가 있으면 데이터도 확인할 수 있습니다.)
Reference
이 문제에 관하여(Room을 암호화해보세요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bm0/items/6838dcc9561cb75d213a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Room을 암호화해보세요), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bm0/items/6838dcc9561cb75d213a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)