我的应用程序将文件从服务器下载到应用程序可能有很多这样的文件。一个文件大约100 MB。我需要做一些事情来安全地将它们放入我的应用程序中。
渴求我试图加密文件。这是多么糟糕的解决方案,因为加密和解密100 mb文件(它的pdf文件)需要一些时间。此外,我需要一次读取此文件,所以我需要解密并将解密文件写入其他文件,以便在此时可以访问文件。 此外,由于文件大小,我无法将此文件保留在内存中。那么也许有方法来加密保存文件的内部存储中的目录?或者这不是个好主意,因为我应该加密目录中的每个文件。
由于我的文件是pdf,我可以将密码输入int,但是如何做到这一点?此外,我可以尝试检查设备是否已植根,但我认为有人会找到解决方法。
那么你会建议什么?
谢谢
答案 0 :(得分:0)
您似乎有3个选项:加密数据;将pdf存储在私人文件夹中;或者不将文件存储在设备上。
1)加密你的数据:正如你所说,有一些缺点,因为pdf非常大,如果你不能将那些存储在内存中,你需要编写解密的文件在显示之前无论如何都要提交文件,所以这并不能真正解决你的问题。
2)将pdf存储在私人文件夹中:或者,您可以将pdf存储在只能通过您的应用访问的私人文件夹中。这可以使用
完成FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
如上所述here。 “MODE_PRIVATE
将创建文件(或替换同名文件)并将其设为您的应用程序的私有”。我看到的唯一问题是,如果人们使用有根电话并且可以访问您应用的私人文件夹。解决这个问题的唯一方法(据我所知)是使用选项3。
3)不要将文件存储在设备上:您每次都可以下载数据或部分数据。这将保证人们无法复制文件,因为它们永远不会在设备上持久存在。如果需要,您可以使用Google文档仅传输部分文档以降低下载要求。这个问题是巨大的数据要求。
我认为你需要权衡利弊,并决定哪种方式最适合你。我个人会选择选项2.我认为你不会找到解决所有问题的解决方案。