Приватный файл для приложения

1

Я хотел бы создать файл, в котором хранятся некоторые данные, к которым можно получить доступ только моим приложением. Внешние пользователи не должны иметь доступ к этому файлу или вносить какие-либо изменения в него. Я буду хранить ключ в файле, доступ к которому может получить доступ при необходимости.

  • 0
    тогда какой у тебя вопрос ????
  • 0
    @KKD что с четырьмя вопросительными знаками? я полагаю, что спрашивающий ясно хочет узнать, где он должен хранить данные в частном месте, доступном только его приложению.
Показать ещё 1 комментарий
Теги:
encryption
cryptography

5 ответов

1
Лучший ответ

Чтобы создать частный файл приложения (который не читается другими приложениями), вы должны использовать Context.openFileOutput() с флагом MODE_PRIVATE.

Если вы обеспокоены, вы можете обернуть возвращаемый InputStream в CiperOutputStream и зашифровать содержимое.

Если вы храните ключи в стандартном криптовом формате (X.509 или PKCS # 12), вы можете использовать новый API KeyChain, введенный в ICS.

3

используйте Environment.getDataDirectory(), http://developer.android.com/reference/android/os/Environment.html#getDataDirectory()

это дает объект File, который является путем доступа к частному каталогу данных конкретного приложения. файлы, созданные в них, принадлежат вашему идентификатору пользователя приложения, не позволяя любому другому приложению получать доступ к ним.

File myPrivateFile = new File(Environment.getDataDirectory(), context.getPackageName() + File.separator + "secret.txt");

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

  • 0
    Дополнительную информацию о безопасности Android смотрите здесь: developer.android.com/guide/topics/security/security.html
  • 0
    Не верно, Environment.getDatDirectory возвращает каталог данных для Android (обычно / data / data). Это не зависит от приложения.
Показать ещё 6 комментариев
1

Чтобы открыть файл из частной папки приложения, можно использовать этот путь к файлу:

File myFilePath = new File(getContext().getFilesDir() + File.separator + "myFile")

Вы можете проверить, существует if(myFilePath.exists()) файл if(myFilePath.exists())...

Чтобы сохранить текстовый файл в каталоге частных приложений

FileOutputStream fos = null;
try {
   fos = getContext().openFileOutput("myFile",Context.MODE_PRIVATE);
} catch (FileNotFoundException e) { }

try {
   fos.write(myTextString.getBytes());
} catch (IOException e) { }

try {
   fos.close();
} catch (IOException e) { }

Чтобы сохранить изображение в каталоге частного приложения:

try {
  myBitmapImage.compress(CompressFormat.JPG, 90, 
                                   openFileOutput("myimage.jpg", MODE_PRIVATE));
} catch (Exception e) { }
1

Почему бы просто не сохранить его в SharedPreference?

Сделайте свой SharedPreference конфиденциальным для своей деятельности, позвонив..

getSharedPreferences(yourfile, MODE_PRIVATE); 

Это гарантирует, что только ваша Activity может получить доступ к этому SharedPreference.

  • 0
    потому что он спросил о сохранении файла, а не пары ключ-значение.
  • 0
    Кроме того, SharedPreference можно также получить доступ с правами root.
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню