0

我的应用程序将文件从服务器下载到应用程序中。可能有很多这些文件。一个文件大约 100 mb。我需要做一些事情来安全地将它们保存在我的应用程序中。

口渴我试图加密文件。这是多么糟糕的解决方案,因为加密和解密 100 mb 文件(它是 pdf 文件)需要一些时间。我也需要一次读取这个文件,所以我需要解密并将解密的文件写入其他文件,以便此时可以访问文件。此外,由于文件大小,我无法将此文件保存在内存中。那么也许有办法在保存文件的内部存储中加密目录?或者这不是一个好主意,因为我应该加密目录中的每个文件。

由于我的文件是 pdf,我可以将密码输入 int,但是如何做到这一点?我也可以尝试检查设备是否已植根,但我认为有人会找到解决方法。

那么你有什么建议呢?

谢谢

4

1 回答 1

0

似乎您有 3 个选项:加密您的数据;将pdf存储在私人文件夹中;或不将文件存储在设备上。

1)加密你的数据:正如你所说,有一些缺点,因为 pdf 文件很大,如果你不能将它们存储在内存中,你需要在显示它们之前将解密的文件写入文件,所以这不会并不能真正解决你的问题。

2) 将 pdf 存储在私人文件夹中:或者,您可以将 pdf 存储在只能通过您的应用程序访问的私人文件夹中。这可以使用

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);

如此所述。“MODE_PRIVATE将创建文件(或替换同名文件)并使其对您的应用程序私有”。我看到的唯一问题是人们是否使用有根手机并且可以访问您应用程序的私人文件夹。解决这个问题的唯一方法(据我所知)是使用选项 3。

3)不要将文件存储在设备上:您可以每次下载数据或部分数据。这将保证人们无法复制文件,因为它们永远不会保留在设备上。如果需要,您可以使用 Google Docs 仅流式传输文档的部分内容以减少下载要求。问题在于庞大的数据需求。

我认为您需要权衡利弊并决定哪个最适合您。我个人会选择选项 2。我认为您不会找到解决所有问题的解决方案。

于 2012-05-21T06:40:33.140 回答