我正在开发一个用于Android2.2的应用程序,让用户从web server.Once购买和下载图像他下载这些图像,只有这个应用程序应该能够查看这些图像。我能想到的一种可能的方法是加密并将图像保存在SD卡中。
但是,我担心的是,即使在加密之后,这些文件对于文件资源管理器应用程序(可以删除/重命名/移动文件)也是可见的。是否有可能将这些文件存储在SD卡中,使其对其他应用程序不可见?
有一个向前锁定功能在BlackBerry(http://www.blackberry.com/developers/docs/4.5.0api/net/rim/device/api/io/file/ExtendedFileConnection.html)的.Once文件被保存到SD卡使用这种方法,它将是可见的,只有相应的应用程序和device.Is有类似的安卓?
是否建议将图像存储在sqlite database.The数据库文件中,其他应用程序在手机中是不可见的。(PS:将有大量图像)
是否可以将图像文件另存为.asec文件。有没有什么api可以把文件转换成.asec格式的?我知道.asec文件不会被文件资源管理器显示出来。
请您指导我或建议一个理想的解决方案,为这种情况。
发布于 2011-11-23 20:42:14
有一种解决方案可以将数据存储在SD卡上,使其无法在非根电话上的设备文件查看器中查看文件。
解决方案是将数据保存在您的应用程序数据文件夹中,并在清单中为您的应用程序激活自动位置选择。这让用户可以选择保存应用程序的位置是外部的还是内部的,所有图像都在应用程序拥有的私人文件夹中。
只有一个缺点。用户可以通过应用程序管理器删除所有文件。她将被警告,这可能会破坏应用程序,但如果没有办法重新下载图像,如果应用程序被删除或用户认为删除应用程序数据将是一件好事,用户将丢失所有购买的项目。
然而,在有根目录的手机上,图像可以从私人文件夹中复制出来。因此,您应该考虑以某种方式对图像进行加密。然而,加密并不那么容易,因为用户总是可以尝试从您的源码或网络流量中提取加密密钥。
发布于 2011-11-23 02:36:26
作为应用程序开发人员,您是用户设备上的访客。用户对设备的控制比您拥有的更多。没有地方隐藏加密所需的密钥。你被迫表现得很好,也许你正在寻找“(在)安全虽然晦涩”。
发布于 2011-11-23 03:09:43
您可以将文件存储在数据库中,除非对DB大小有限制。
或者您可以将图像存储在一个容器中(例如,我们的SolFS虚拟文件系统),并从该容器中提取它们。用户仍然可以复制容器。这里的一个选项是使用某个设备ID (例如,IMEI代码)作为加密密钥的一部分来加密容器。
如果手机是根深蒂固的,用户几乎可以做任何事情,所以正如Rook所指出的,晦涩成为等式的重要部分。
另一种选择是为您的图像创建自定义文件格式,以便只有您的应用程序能够加载图像数据。同样,您可以使用设备的ID对这些文件进行加密,以便将镜像“绑定”到设备。
请注意,如今的知识产权(包括图像)被授权给用户,而不是设备。或者至少用户有权在他的几个系统(例如不超过3个设备)之间移动IP。您也可以通过使用随机密钥加密图像,然后为每个设备使用IMEI+salt加密随机密钥(所以您将随机密钥加密3次)来处理此问题。然后用户可以在他的系统之间移动文件。当然,这并不是让用户在其设备之间移动文件的唯一方法。
https://stackoverflow.com/questions/8231869
复制相似问题