【问题标题】:Compress folder with files rar/zip on android在 android 上使用文件 rar/zip 压缩文件夹
【发布时间】:2015-07-16 12:32:28
【问题描述】:

我遇到了一个问题。我想在/data/data/com.package.name 使用Context.getExternalFilesDirs 存储带有媒体数据的某个文件夹。但我想对用户隐藏数据。但是每个人都可以从/data/data/com.package.name 文件夹中获取这些文件。即使文件被隐藏,拥有根设备的人仍然可以访问这些数据。所以我需要一些方法来encrypt 或压缩文件夹来保护它。如何保护文件夹? 我可以使用带密码的 Zip 吗?安全吗?

我认为encrypt 所有二进制文件和decrypt 它们不是一个好习惯,因为这会花费很多时间。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    对于在/data/data/ 中存储文件的普通用户(使用非root 手机)无法访问。但是,对于已root 的手机,没有办法阻止用户获得他们想要的东西。

    【讨论】:

    • 他/她如何从我的应用程序中提取密码?我可以在服务器端存储通行证
    【解决方案2】:

    我找到了解决方案。非常不错的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();
        }
    }
    

    【讨论】:

    • 但请记住,它不安全,因为您在应用程序中有密码;)即使密码存储在远程服务器上,它也不会阻止用户嗅探流量:)
    • 主要问题是zip容易破解,而不是密码存储问题。我可以在服务器之间交换数据时使用密钥,祝你好运找到密码,也许在 100 年后你会找到它。
    • 但即便如此,解压缩后的数据也会存储在某处;) ram 可以轻松转储到文件中;) 使用 root 设备一切皆有可能:)
    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 2015-03-25
    • 2011-10-17
    • 2011-10-04
    • 1970-01-01
    • 2018-10-21
    相关资源
    最近更新 更多