У меня есть база данных, содержащая личную информацию, которая должна быть доступна только моему приложению. Я добавил файл базы данных в папку с ресурсами, которая в первый раз копируется в каталог базы данных приложений, но в каталоге «assets» и «data» (на корневых устройствах) может быть доступ к любому другому приложению. Поэтому я решил зашифровать база данных. Android по умолчанию SQLite Database не обеспечивает шифрование данных, поэтому я решил использовать SQLCipher для android http://sqlcipher.net/sqlcipher-for-android/.Как защитить пароль (зашифрованный) на Android?
Теперь я успешно зашифровал базу данных, и я могу получить к ней доступ с использованием определенного пароля. Но проблема остается ... Где я должен хранить этот пароль? так что он может быть доступен только для моего приложения.
- Невозможно жестко записать его, поскольку он будет доступен после декомпиляции, даже если он запутан.
- не может хранить его в файловой системе либо (активы/сырье)
- Не может попросить пользователя ввести его как пользователь может быть хакером
Это автономное приложение без сервера взаимодействие вообще
Если вы видите пользователя в качестве атакующего, вы не можете что-либо на стороне клиента доверять. Просто как тот. Вы можете просто бросать тонны обфускации в проблему, а затем надеяться, что никто не захочет ее сломать. – CodesInChaos
Почему нет взаимодействия с сервером? Если у вас действительно нет веских оснований, вы должны использовать сервер для хранения ключа, на мой взгляд. – Entreco