压缩文件夹文件rar / zip在android上

时间:2015-07-16 12:32:29

标签: android file encryption zip android-external-storage

我遇到过一个问题。我想使用/data/data/com.package.nameContext.getExternalFilesDirs处存储包含媒体数据的特定文件夹。但我想隐藏用户的数据。但每个人都可以从/data/data/com.package.name文件夹中获取此文件。即使文件被隐藏,仍然拥有root设备的人也可以访问这些数据。所以我需要一些方法来encrypt或压缩文件夹以保护它。我该如何保护文件夹? 我可以使用Zip密码吗?这样安全吗?

我认为encrypt所有二进制文件和decrypt这些都不是好习惯,因为这需要花费很多时间。

2 个答案:

答案 0 :(得分:0)

无法阻止用户访问这些文件。如果用户想要他们,他或她可以从您的应用程序中提取密码并解密zip存档。

当您的服务器上有密码时,文件无法解密,但当您的应用程序下载密码以解密数据时,用户可以嗅探该密码。 如果你想存储任何人都不应该访问的数据(例如密码),我担心你应该阅读Security Through Obscurity

基本上,当您的应用程序可以解密数据时,高级用户也可以这样做。

对于普通用户(使用非root电话),无法访问/data/data/中存储文件的情况。但是,有了根电话,就无法阻止用户获得他们想要的东西。

答案 1 :(得分: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();
    }
}