2017-11-27 1 views
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; 
} 

나는 keypreferencebyte[] decodedKey에 저장하지만 여전히 나는 영역을 열 수 아니다 사용하여 암호화 된 영역 파일을 열려고 시도 파일.

여기에 뭔가가 있습니까?

답변