나는 this 질문 및 이와 유사한 질문을 겪었지만 여전히 이것을 파악할 수는 없습니다.안드로이드에서 기존 영역 데이터베이스에 암호화를 적용하는 방법은 무엇입니까?
이전에 내 안드로이드 앱에 SQLite
을 사용하고있었습니다. 미리 채워진 크기의 Sqlite 데이터베이스는 약 15MB입니다. 임시 데이터베이스에 내 레코드를 임시 데이터베이스로 저장하여 새로운 영역 데이터베이스에 저장했습니다. 이 새로운 영역 데이터베이스의 크기는 약 150MB였습니다. 그런 다음 Mac에서 Realm 브라우저로 열어 압축했습니다. 이제 크기가 15MB로 줄었습니다.
새 데이터베이스를 생성하는 동안 암호화를 사용하고 sqlite 행을 복사하면 크기는 약 150MB입니다. 16 진수 암호를 사용하여 열었을 때 잘 열립니다. 그런 다음 이전 크기로 다시 압축하여 보통 15MB 크기로 되돌립니다. 하지만, 이유가 모르겠다. 암호화가 이제 제거되었습니다..
이 문제를 해결하기 위해 나는 한 가지 해결책만을 생각할 수 있습니다. 이미 압축 된 영역 데이터베이스에 암호화를 적용 할 수 있다면. 하지만 안드로이드에서 어떻게해야 하는지를 알 수 없었습니다.
편집 - 일부 관련 부품 - 압축 데이터베이스에 암호화 된 데이터베이스를 변환
@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;
}
}
- -
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 부> 나는이 영역을 뽑아 안드로이드 에뮬레이터에서 데이터베이스 -> 영역 브라우저에서 (16 진수 비밀 번호) -> 압축 (하지만이 새로 열었습니다 생성 된 압축 데이터베이스는 이제 암호화되지 않음)
P. - 내 질문에 기술적 인 내용이 포함되어 있지만이 방법을 찾지 못했습니다.
영역 데이터베이스를 닫으시겠습니까? 가능하면 복사 할 코드를 공유 하시겠습니까? –
미안하지만 당신을 얻지 못했습니다. 'sqlite'에서'realm'으로 또는 암호화에서 압축으로 복사하는 코드입니까? –
@PravinD, 관련 정보와 함께 제 질문을 업데이트했습니다. –