Я создаю приложение, которое должно позволять шифрование аудиофайлов. Я создаю объект SecretKey и использую его для шифрования и дешифрования файлов. Все работает нормально, но теперь мне нужен способ локального хранения объекта SecretKey, чтобы при повторном открытии приложения его можно было использовать для расшифровки данных.
Я пробовал несколько методов, включая следующие:
final byte[] filesBytes = encodeFile(mySecretKey, stringToSave);
SharedPreferences settings = context.getSharedPreferences(KEY_PREFS, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("cryptoKey", Arrays.toString(filesBytes));
Чтобы получить данные, я пытаюсь сделать следующее:
SharedPreferences settings = context.getSharedPreferences(KEY_PREFS, 0);
String stringArray = settings.getString("cryptoKey", null);
if (stringArray != null) {
String[] split = stringArray.substring(1, stringArray.length() - 1).split(", ");
byte[] array = new byte[split.length];
for (int i = 0; i < split.length; i++) {
array[i] = Byte.parseByte(split[i]);
}
localSecretKey = new SecretKeySpec(array, "AES");
}
Я также просмотрел сообщения например: Как сохранить secretKey в KeyStore и получить его , что не помогло.
Что мне нужно знать, так это как я могу сохранить объект SecretKey локально, чтобы я мог получить его позже, когда приложение откроется?