6
9

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 5 years have passed since last update.

Realmで暗号化して、中身を確認するまで。

Posted at

暗号化

Realmで暗号化するには、公式のサンプル通り、以下のような感じでやればよい

このサンプルの通りだと、毎回ランダムな文字が割り振られてしまうので、一旦文字列をキーにして、byte列に変換して入れる事にする。
実際に使う時はコードに直接書いちゃうと意味ないのでいい感じに見れないところに置く必要がある。

val key = fadfasdfdsfdassfasdfa" // 64文字

RealmConfiguration config = new RealmConfiguration.Builder()
  .encryptionKey(key.toByteArray())
  .build();

Realm realm = Realm.getInstance(config);

中身を確認する

さて、実際にどんなデータが入ってるのか中身を確認したい。
中身を確認するには以下の3つの方法がある。

  1. stetho-realmを使う
  2. Realm Browserを使う
  3. Realm Object Serverを使う

順に書いていく

1. stetho-realmを使う

これを使う。

この辺のサンプル通りにやれば、普通に使える。(雑

。。。はずなんだけど、僕が作ってるアプリだと見れなかった。。。
https://github.com/realm/realm-java/issues/3700

この辺が関係しているのかも?ゼロから自分で作って試してみたら、普通に見ることが出来たので何かしらの何かが影響して見れなくなっているんだと思う。

2. Realm Browserを使う

ざっくりした使い方は以下を参照
http://blog.techium.jp/entry/2016/07/03/231722

ただし、realmファイルを取得するためには、一工夫必要だった。↑の方法では、端末のインストールしたパッケージのデータ置き場に保存しているファイルを、一度どこからでもアクセス可能な領域にコピーする。と書いてあったけど、これがうまくいかなかった。

なので、以下のコマンドでrealmファイルの保存場所から直接自分のMacに落としてきて、開いてる。
Windowsだとどうなるかわからない。。

adb -d shell run-as com.mapyo.sample cat /data/data/com.mapyo.sample/files/default.realm | perl -pe 's/\r\n/\n/' > default.realm

com.mapyo.sampledefault.realmは自分の環境に合わせてよしなに修正してください。

そして、落としてきたrealmファイルをいざ開こうとすると、

The encryption key must be entered as a 128-character string of hexadecimal values.

こういうメッセージが出た。まあ、暗号化した時のやつを入れればいいんだな。という事はわかったのだけど、128文字??16進数??どういう事??という感じでよくわからなかった。

いろいろググると答えを見つけた。

暗号化キーのバイト列を16進数で表せばいいだけだった。
Kotlinだとこんな感じ

val key = "3fdafad...." // 64文字

val encryptionKey = key.toByteArray().map {
    String.format("%x", it)
}.joinToString(separator = "")

println(encryptionKey)

ということで、ここで確認出来たキーを入れれば見れた!

3. Realm Object Serverを使う

僕は試してないけど、

こんな感じでやれば出来るっぽい(雑
Twitterでstetho-realmで見れないー。。。とつぶやいてたら紹介してもらった!!
ありがたや!!

所感

stetho-realmが使えると一番便利そうなんだけど、見れなくて切ない。。。

6
9
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
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?