Android - Как локально сохранить и получить объект SecretKey и получить его - PullRequest
0 голосов
/ 08 января 2020

Я создаю приложение, которое должно позволять шифрование аудиофайлов. Я создаю объект 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 локально, чтобы я мог получить его позже, когда приложение откроется?

...