在Android设备上读取加密文件而不将其复制到其他位置?

时间:2013-12-12 22:24:48

标签: android image pdf video encryption

我在外部存储目录/ SD卡中加密了文件。这些文件是加密的

  • images(jpg,bmp,...)
  • 视频(3gp,mp4,...)
  • PDF文件

我想加载位图,视频或pdf,以便在我的ImageView,VideoView中加载它们,或者通过pdf查看器打开它们。问题是文件是秘密的。我不希望存储文件来打开它们。例如,在PDFviewer中显示它们时,其他人可以阅读它们。

有没有办法直接打开图像或pdf,即使它是在没有复制未加密的副本的情况下加密的?

2 个答案:

答案 0 :(得分:1)

如果您想让您的文件尽可能保密,我会使用

javax.crypto.CipherInputStream

或其定制的子类。要做到这一点,您必须显示嵌入在应用中的内容,这对于图像和视频来说非常简单。对于PDF,您需要添加一个控件,该控件可以显示该类文件以防止其他人访问该内容。

希望它有所帮助。

答案 1 :(得分:0)

您引用了三种方案:图片分为ImageView,视频分为VideoView,PDF格式分配给第三方应用。

图像很简单。确保您的解密逻辑可以为您提供InputStream解密内容,然后在BitmapFactory上使用适当的方法。

我不知道从加密源可靠地向VideoView提供视频的方法。我知道有些人已经尝试嵌入HTTP服务器并进行流式传输。

您可以将提供PDF解密内容的ContentProvider发布到第三方应用。 This sample app只是读入文件,但您可以使用相同的方法解密它。

所有这些都假设用户是负责请求加密此内容的用户,并且您已从用户收集了密码短语。相反,如果您的愿景是尝试DRM解决方案,那么任何想要通过对您的应用进行逆向工程来解密您的内容的人都可以。