想法是这样的。
我的应用程序允许用户从社交网络听音乐和观看视频。用户可以将这些文件保存在缓存中,以便能够离线播放它们。此数据保存到 SD 卡,可以通过文件管理器等访问
我想将这些文件的访问权限限制为其他应用程序。最明显的解决方案是数据加密。
您能否向我推荐一些用于快速文件加密/解密的库或框架?在加载过程中“动态”加密文件是非常可取的。
这个过程会不会太慢和资源密集?
可能存在其他一些方式 - SD 文件系统中的受保护文件夹或类似的东西?
想法是这样的。
我的应用程序允许用户从社交网络听音乐和观看视频。用户可以将这些文件保存在缓存中,以便能够离线播放它们。此数据保存到 SD 卡,可以通过文件管理器等访问
我想将这些文件的访问权限限制为其他应用程序。最明显的解决方案是数据加密。
您能否向我推荐一些用于快速文件加密/解密的库或框架?在加载过程中“动态”加密文件是非常可取的。
这个过程会不会太慢和资源密集?
可能存在其他一些方式 - SD 文件系统中的受保护文件夹或类似的东西?
是的,有一种更标准的方法可以做到这一点。
通过使用openFileInput
on yourContext
并设置MODE_PRIVATE
标志,您将能够在应用程序中创建文件甚至文件夹。此外,这些资源对您的应用程序来说是完全私有的。
编辑 :
大多数情况下,这些文件将存储在/data/data/<app_package_name>/files
. 也就是说,大部分时间都在手机内存上,尽管这是特定于实现的。
关于@Carlos提到文件垃圾邮件的评论,是的,您可以用多个文件淹没 NAND,但/data
在大多数情况下会安装在专用分区上。所以你会在某个时候达到分区的虚拟大小。请看这篇文章,接受的答案提供了更多关于这个的细节。简而言之,这是特定于实现的(取决于制造商)。
如果您想继续使用外部存储,您唯一的选择是使用加密。SpongyCastle可以提供帮助。它是 BouncyCastle API 的 android 版本。
除此之外,您可以将文件移动到内部存储,这在您的情况下可能不可行,因为媒体文件往往很大,并且大多数设备上的内部存储非常有限。即使您确实将它们移动到内部存储,任何 root 用户都可以访问它们(或任何具有 root 权限的应用程序)。
保护文件夹不是一种选择,因为任何有权访问外部存储的应用程序都可以使用外部存储上的任何内容。你对此无能为力。