0
질문 : Realm Browser
(windows)에 암호화 된 영역 파일을 열려고하면 다음과 같은 메시지가 나타납니다.영역 데이터베이스 암호 해독 실패
이 영역은 렐름 파일이 아니거나 암호화되어 있습니다.
는 입력 키 128 자리 16 진수로 인코딩 된 암호화를
중요 - 나는 디스크에 저장하기 전에 내 영역을 폐쇄하고 .
코드
RealmConfiguration config = new RealmConfiguration.Builder()
.name("w5uyqFyEDEK_OCWyl4123aa77")
.schemaVersion(2)
.encryptionKey(myClassObject.getRealmKey())
.deleteRealmIfMigrationNeeded()
.build();
방법
public byte[] getRealmKey() {
byte[] key;
String savedKey = getStringFromPrefs(KEY);
if (savedKey.isEmpty()) {
key = generateKey();
String keyString = encodeToString(key);
saveStringToPrefs(keyString);
} else {
key = decodeFromString(savedKey);
}
return key;
}
private void saveStringToPrefs(String aKeyString) {
pref.edit().putString(KEY, aKeyString).apply();
}
private String encodeToString(byte[] aKey) {
AppLogger.d("Encoding Key: %s", Arrays.toString(aKey));
return Base64.encodeToString(aKey, Base64.DEFAULT);
}
private byte[] decodeFromString(String aSavedKey) {
byte[] decoded = Base64.decode(aSavedKey, Base64.DEFAULT);
AppLogger.d("Decoded Key: ", Arrays.toString(decoded));
return decoded;
}
private byte[] generateKey() {
byte[] key = new byte[64];
new SecureRandom().nextBytes(key);
return key;
}
나는 key
이 preference
및 byte[] decodedKey
에 저장하지만 여전히 나는 영역을 열 수 아니다 사용하여 암호화 된 영역 파일을 열려고 시도 파일.
여기에 뭔가가 있습니까?