Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓安全图像存储_Android_Database_Image_Security_Sd Card - Fatal编程技术网

Android 安卓安全图像存储

Android 安卓安全图像存储,android,database,image,security,sd-card,Android,Database,Image,Security,Sd Card,我正在为Android 2.2开发一个应用程序,允许用户从web服务器购买和下载图像。一旦他下载了这些图像,只有这个应用程序才能查看这些图像。我能想到的一种可能的方法是将图像加密并保存在SD卡中 但是,我担心的是,即使在加密之后,这些文件对于文件浏览器应用程序(可以删除/重命名/移动文件)也是可见的。是否可以将这些文件以其他应用程序看不到的方式存储在SD卡中 BlackBerry中有一个前向锁定功能(http://www.blackberry.com/developers/docs/4.5.0a

我正在为Android 2.2开发一个应用程序,允许用户从web服务器购买和下载图像。一旦他下载了这些图像,只有这个应用程序才能查看这些图像。我能想到的一种可能的方法是将图像加密并保存在SD卡中

但是,我担心的是,即使在加密之后,这些文件对于文件浏览器应用程序(可以删除/重命名/移动文件)也是可见的。是否可以将这些文件以其他应用程序看不到的方式存储在SD卡中

BlackBerry中有一个前向锁定功能(http://www.blackberry.com/developers/docs/4.5.0api/net/rim/device/api/io/file/ExtendedFileConnection.html)。一旦使用此方法将文件保存到sd卡上,它将仅对相应的应用程序和设备可见。android是否有类似的功能

建议将图像存储在sqlite数据库中。该数据库文件对手机中的其他应用程序不可见。(PS:将有大量图像)

是否可以将图像文件保存为.asec文件。是否有任何api可以将文件转换为.asec格式?我知道.asec文件不会由文件浏览器显示


请您指导我或为这种情况提出一个理想的解决方案

作为应用程序开发人员,您是用户设备上的访客。用户对设备的控制比您以往任何时候都要多。没有地方可以隐藏加密所需的密钥。你不得不表现得很好,也许你是在寻找(in)安全性,尽管它很模糊。

除非数据库大小有限制,否则你可以将文件存储在数据库中

或者,您可以将图像存储在一个容器中(例如,我们的SolFS虚拟文件系统)并从该容器中提取它们。用户仍然可以复制容器。这里的一个选项是使用一些设备ID(例如IMEI代码)作为加密密钥的一部分来加密容器

如果手机有根,用户几乎可以做任何事情,就像Rook指出的那样,模糊性成为等式的一个重要部分

还有一个选项是为图像创建自定义文件格式,这样只有应用程序才能加载图像数据。同样,您可以使用设备的ID对这些文件进行加密,以将图像“绑定”到设备


请注意,现在知识产权(包括图像)授权给用户,而不是设备。或者至少用户有权在几个系统之间移动IP(比如不超过3台设备)。您也可以通过使用随机密钥加密图像,然后为每个设备使用IMEI+salt加密随机密钥来处理此问题(因此您将对随机密钥进行加密,例如3次)。然后用户可以在他的系统之间移动文件。当然,这不是让用户在设备之间移动文件的唯一方法

您可以将图片包装到一个文件中,该文件已加密,对其他程序无效,然后在应用程序中对图像文件进行解密并显示。另一种技术是在存储在SD卡上时插入水印,然后在程序中显示时删除水印。

您可以加密图像文件,然后将其保存在SD卡中。这不会阻止用户查找/复制/删除文件。您可以使用
File
类并使用
File.setReadOnly()
但我认为它需要根访问权限。在任何情况下,用户都将拥有与您的应用程序相同的权限


最安全的方法是创建一个完整的在线查看器。

有一种解决方案可以将数据存储在SD卡上,这样就不可能在非根目录手机上的设备文件查看器中查看文件

解决方案是将数据保存在应用程序数据文件夹中,并在清单中激活应用程序的自动位置选择。这允许用户选择将应用程序保存到外部或内部的位置,并且所有图像都位于应用程序拥有的私有文件夹中

只有一个缺点。用户可以通过app manager删除所有文件。她将被警告,这可能会破坏应用程序,但如果无法重新下载图像,则如果应用程序被删除,或者用户认为删除应用程序数据是件好事,则用户将丢失所有购买的项目


但是,在根手机上,图像可以从私人文件夹中复制。因此,您应该考虑以某种方式对图像进行加密。然而,加密并不是那么容易,因为用户总是可以尝试从您的源代码或网络流量中提取加密密钥。

但是我们不能确保存储的文件不能被其他应用程序(如文件浏览器)使用或不可见吗?例如,android 2.2及更高版本sdcard中android安全文件夹中的.asec文件。@user1003608是的,但我的手机坏了,我的文件浏览器看到了一切。我可以将调试器附加到任何应用程序,并查看内存中的任何内容。如果手机坏了,整个目的都会失败。但认为植根是“非法的”。至少从商业角度来看?@firebolt7这是最不真实的,至少在美国你可以自由地越狱。在朝鲜或任何你所指的极权独裁国家,法律可能会有所不同。但这将以保证为代价!我知道法律允许越狱或越狱。但最终,“免费维修”的决定权在于制造商。如果这对普通电话用户来说真的很重要。有什么方法可以防止加密文件被删除/重命名/移动?至少要防止使用像ES file explorer这样的文件资源管理器应用程序?假设没有进行根操作。在android 2.2及更高版本中,有一个android secure文件夹。它包含带有ext*.asec的加密文件。这些文件在ES文件资源管理器中不可见。@firebolt7很遗憾,我不知道方法,但您可以在S上搜索此特定问题