【发布时间】:2017-11-27 06:34:36
【问题描述】:
问题:当我尝试在Realm Browser(Windows)中打开加密领域文件时,它给了我以下消息。
这不是 Realm 文件,或者是加密的。
输入:128 个字符的十六进制编码的加密密钥
重要 - 在保存到磁盘之前,我将关闭我的领域。
代码
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;
}
我尝试使用存储在preference 和byte[] decodedKey 中的key 打开加密领域文件,但我仍然无法打开领域文件。
我错过了什么吗?
【问题讨论】:
标签: android encryption realm realm-java