Проблема:
В настоящее время я пишу приложение для Android API уровня 19 (да, я знаю, что оно довольно старое). У меня проблема с сериализацией данных настроек. Частично проблема заключается в том, что некоторые данные являются конфиденциальными и должны быть зашифрованы перед записью на диск. Таким образом, существует смесь зашифрованных и незашифрованных данных. Данные состоят из int, Boolean, String, byte [] и других типов.
Для тех, кому интересно, при запуске приложения пользователь должен ввести свой PIN-код. ПИН-код запускается по алгоритму ha sh несколько раз. В середине цикла они получают криптографический ключ и затем хэширование l oop завершается. Таким образом, промежуточный результат является ключевым, а окончательный результат - проверкой. Проверка записывается в файл настроек, а ключ используется для шифрования или дешифрования конфиденциальных данных. Существуют и другие средства защиты, но это работает в двух словах.
Большинство обнаруженных мной реализаций используют HashMap и ObjectOutputStream, которые нельзя использовать из-за проблемы криптографии (согласно примерам, которые Я видел до сих пор). Я встречал класс Data в Android документации разработчика, но Android Studio говорит, что для использования ему требуется API 29.
Исследование:
I нашел довольно много ответов в разных местах, таких как:
Надежно преобразовать любой объект в строку, а затем обратно
https://developer.android.com/reference/androidx/work/Data
https://beginnersbook.com/2013/12/how-to-serialize-hashmap-in-java/
HashMap не сериализуем
https://developer.android.com/guide/topics/security/cryptography#java
... и многие другие, но я не могу их использовать из-за того, что я пытаюсь сделать.