2016-12-05 11 views
1

私はthis質問と同様の質問を行ったが、私はまだこれを把握することができません。Androidの既存のレルムデータベースに暗号化を適用するにはどうすればよいですか?

私はアンドロイドアプリのSQLiteを使用していました。サイズがの事前に設定されたSqliteデータベースは約15 MBです。私は新しいRealmデータベースに自分のレコードを一時的なアンドロイドアプリでコピーしました。この新しいRealmデータベースのサイズは約150 MBでした。それから、私はMacでRealmブラウザでそれを開き、圧縮しました。サイズが15 MBに縮小されました。

新しいデータベースの作成中に暗号化を使用して、のsqlite行をコピーすると、サイズは約150 MBになります。私は16進パスワードを使ってそれを開いたとき、それはうまく開きます。その後私はそれを以前のサイズに戻して通常の15 MBに戻しました。しかし、私はなぜの暗号化が今削除されたのか分からない

これに対処するには、1つの解決策しか考えられません。既に圧縮されたRealmデータベースに暗号化を適用できるかどうか。しかし、私は、Androidでこれを行う方法を把握できませんでしたか?

編集 - いくつかの関連部分 -

パート1 -

Realm.init(this); 
byte[] key = new byte[64]; // Just for demonstration 
RealmConfiguration config = new RealmConfiguration.Builder() 
       .name("QBank.realm") 
       .directory(getExternalFilesDir(null)) 
       .encryptionKey(key) 
       .build(); 
Realm realm = Realm.getInstance(config); 

パート2 -

@Override 
    public void onClick(View view) { 
     switch (view.getId()) { 
      case R.id.button_sqlite2realm: 
       DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this); 
       databaseAccess.open(); 
       questionsList = databaseAccess.getAllQuestions(); 
       databaseAccess.close(); 

       Realm realm = Realm.getInstance(config); 
       realm.executeTransaction(new Realm.Transaction() { 
        @Override 
        public void execute(Realm realm) { 
         for (QuestionBank question : questionsList){ 
          realm.copyToRealmOrUpdate(question); 
         } 
        } 
       }); 
       break; 
     } 
    } 

圧縮データベースに暗号化されたデータベースを変換する - >私は、このレルムを引っ張っデータベースはアンドロイドエミュレータから - >(六進パスワードで)レルムブラウザで開く - >圧縮作成された圧縮データベースは現在暗号化されていません)

P.S. - 私の質問は分かりやすいですが、私はこれを行う方法を見つけることができませんでした。

+0

レルムデータベースを閉じていますか?可能であれば、あなたのコードをコピーして共有しますか? –

+0

申し訳ありませんが、私はあなたを取得していません。あなたは 'sqlite'から' realm'へ、または暗号化から圧縮へのコピーのためのコードを意味しますか? –

+0

@PravinD、私は関連情報を使って質問を更新しました。 –

答えて

0

私はthis questionあなたが直面しているのと同じ問題を指摘しています。

圧縮では、データのパターンを見つける必要があります。暗号化は、そのようなパターンすべてを 削除します。

暗号化する前に圧縮する必要があります。 暗号化は、データを通常はランダムなストリームと区別できない高エントロピーデータに変換します。圧縮は、サイズの縮小を得るためにパターンに依存しています。暗号化はそのようなパターンを破壊するので、暗号化されたデータに圧縮アルゴリズムを適用すると、圧縮アルゴリズムはサイズを大幅に縮小できません。

他のヘルプについて教えてください。

希望すると、これが役立ちます。ハッピーコーディング!!

関連する問題