Есть ли способ безопасно хранить пользовательские данные на устройстве Android?

Я пишу приложение, в котором пользователи иногда делают заказы. Я хочу предоставить пользователям возможность сохранять свою платежную информацию (имя, адрес и т.д.), Чтобы ее можно было быстро восстановить позже, если они хотят сделать другой заказ. Пользователь будет вводить пароль для защиты данных.

Очевидно, я не могу просто поместить это как файл на устройство, так как любой может root/найти данные. Есть ли встроенный метод Android для хранения защищенных данных, заблокированных паролем? Если нет, то что хорошего места для безопасного хранения этих данных с помощью Java?

Изменить: Чтобы уточнить, когда я говорю, что пользователь вводит пароль, я не имею в виду, что у меня есть способ защитить данные. Я просто пытаюсь передать метод, с помощью которого пользователь будет защищать данные на своем конце; теперь я пытаюсь понять, как сохранить свой конец сделки.:)

Ответ 1

Вы можете использовать классы javax.crypto для шифрования любой конфиденциальной информации.

Вы можете просмотреть исходный код приложения Secrets for Android для некоторых примеров.

Секреты для Android - это приложение безопасно хранить и управлять паролями и секреты на вашем телефоне Android. Это использует такие методы, как сильное шифрование и автоматический выход из системы, чтобы ваши секреты остаются в безопасности (предполагая, что вы используйте хороший мастер-пароль!). Контекстно-зависимые советы подсказывают вам через его работу, облегчая для использования.

Ответ 2

Очевидно, я не могу просто поставить это как файл на устройстве, так как любой может root/найти данные.

Правда, но если вы разрешите пользователю определять пароль для файла резервной копии, то кому-то, кто украл файл, все равно придется взломать шифрование. Они могут узнать алгоритм, который вы используете, но не пароль.

Есть ли встроенный метод Android для хранение защищенных данных, которые заблокированы с паролем?

Сам Android не предлагает зашифрованное хранилище файлов. Вы можете сами зашифровать файлы, что я и предполагал, что вы делали, когда писали, что "пользователь вводит пароль для защиты данных".

Ответ 3

Посмотрите на SQLCipher для Android. Вы можете сохранить эту информацию в базе данных, а затем зашифровать ее с помощью 256-битного AES. http://sqlcipher.net/sqlcipher-for-android/ Основной проект является propriatery, но вы можете бесплатно получить бинарные файлы Android через их GitHub,, а также некоторые примеры использования.