質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

8870閲覧

暗号化RealmファイルをRealm Browserで開きたい

aomi

総合スコア11

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2016/10/22 13:48

###前提・実現したいこと
Swift3とRealmを用いて製作しているのですが、暗号化したRealmファイルをRealm Browserで開く方法が分かりません。
128文字のキーを入力しろと言われましても何処でどうやって見るの?という状態です。
暗号化は未経験なので、そもそもちゃんと行えているかという不安もあります。

以下、どのように暗号化を行ったかを記しておきます。
公式の情報を参考に書いてみたものになります。

###暗号化したいRealmファイルについて
・事前にCSVファイルを取り込み、アプリに組み込んで使う
=利用者はReadOnly
・取り込む時点で暗号化するため、利用者も同じキーを使う必要がある

故に、キー(の元となる数?)はコード内に直接記述しました。

###暗号キーの生成とRealmの取得

Swift

1func getKey() -> Data? { 2 let key = "1234567890123456789012345678901234567890123456789012345678901234" 3 return key.data(using: String.Encoding.utf8, allowLossyConversion: false) 4}

これを鍵にして、Realmを取得。

Swift

1let config = Realm.Configuration(fileURL: realmPath, encryptionKey: self.getKey()) 2do { 3 let realm = try Realm(configuration: config) 4 //処理を記述 5} 6catch { /*省略*/ }

###実行結果
取得できればファイルに書き込めて、バンドルし読み込むことも可能です。
また、ブラウザで開くと暗号キー入力を求められるため、正常に暗号化ファイルが作成できていると認識しています。

問題は、キーが分からないからブラウザで開けない。
キーを確認する方法をご存知の方おりましたら、ご回答のほどよろしくお願いします。

また暗号化の方法そのものが間違っていましたら、そちらもご教授いただけますと幸いです。

###補足情報(言語/FW/ツール等のバージョンなど)
Xcode8.0
Swift3
Realm2.0.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

書いてある通りの暗号化キーを使っているなら、

31323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334

Realm Browserに上記の文字列を入力すれば見ることができます。
この文字列は暗号化キーのバイト列を16進数で表現したものです。

Dataのインスタンスを16進数に変換する方法はいくつかありますが、例えば下記のようにして、プログラムからこの値を求めることができます。

swift

1print(getKey()!.map { String(format: "%.2hhx", $0) }.joined())

投稿2016/10/22 16:17

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問