2015-07-16 2 views
0

У меня возникла одна проблема. Я хочу сохранить определенную папку с данными мультимедиа здесь /data/data/com.package.name, используя Context.getExternalFilesDirs. Но я хочу скрыть данные от пользователей. Но каждый может получить эти файлы из папки /data/data/com.package.name. Даже если файлы скрыты, все же люди с корневыми устройствами могут получить доступ к этим данным. Поэтому мне нужно как-то добраться до encrypt или закрепить папку, чтобы защитить ее. Как я могу защитить папку? Могу ли я использовать Zip с паролем? Это безопасно?Сжатие папки с файлами rar/zip на android

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

ответ

0

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

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

В основном, когда ваше приложение может расшифровать данные, опытный пользователь может сделать это слишком.

Для обычных пользователей (с некорневых телефона) хранения файлов в /data/data/ не доступны. Но с укоренившимся телефоном нет способа остановить пользователей от того, что они хотят.

+0

как может он/она извлечь пароль из моего приложения? Я могу сохранить пропуск на стороне сервера –

+0

сообщение обновлено :) –

0

Я нашел решение. Очень хорошая библиотека Java http://www.lingala.net/zip4j/ делает работу: вот пример

public void unzipFile(){ 
    String path= Environment.getExternalStorageDirectory().getAbsolutePath(); 

    String source = path+"/Download/circus.zip"; 
    String destination = path+"/Download/"; 
    String password = "1234567"; 

    try { 
     ZipFile zipFile = new ZipFile(source); 
     if (zipFile.isEncrypted()) { 
      zipFile.setPassword(password); 
     } 
     zipFile.extractAll(destination); 
    } catch (ZipException e) { 
     e.printStackTrace(); 
    } 
} 
+0

Но помните, что он не защищен, так как у вас есть пароль в приложении;) , даже если пароль хранится на удаленном сервере, он не мешает пользователям обнюхивать трафик :) –

+0

Основная проблема заключается в том, что zip легко обрабатывать, а не проблему хранения паролей. Я могу использовать секретные ключи при обмене данными между сервером и удачи с поиском пароля, возможно, через 100 лет вы его найдете. –

+0

Но даже тогда распаковывает данные будет храниться где-то;) баран можно Ис выгружаются в файл;) с корневым устройством все возможно :) –

Смежные вопросы