2013-12-12 26 views
0

我已在外部存儲目錄/ SD卡中加密文件。這些文件加密後在Android設備上讀取加密文件而不將其複製到其他位置?

  • 圖片(JPG,BMP,...)
  • 視頻(3GP,MP4,...)
  • PDF文件

我要加載的位圖,視頻或PDF格式,以便將它們加載到我的ImageView,VideoView或通過PDF查看器打開它們。問題是文件是祕密的。我不希望文件被存儲來打開它們。例如,在PDFviewer顯示它們時,他們可以被其他人讀取。

即使在不復制未加密的副本的情況下對其進行加密,是否可以直接打開圖像或pdf?

+0

是否http://stackoverflow.com/questions/8165216/what-is-the-use-of-memoryfile-in-android幫助? –

+0

聽起來很有趣。但是沒有太多的代碼樣本。你知道它到底用了什麼嗎? – softwaresupply

回答

1

如果你想讓你的文件,祕密地爲您的應用程序,我會用

javax.crypto.CipherInputStream 

或它的子類定製。要做到這一點,你必須展示你的內容嵌入到你的應用程序,這是非常簡單的圖像和視頻。對於PDF,您需要添加一個可顯示該類文件的控件,以防止其他人訪問該內容。

希望它有幫助。

+0

用cipherSTream看着前方。但是,該cipherstream使用initalization如下所示:http://stackoverflow.com/questions/9156545/android-file-cryptography我想要的是一種自定義密碼的方式,如下所示:http://stackoverflow.com/questions/20531329 /在java中加密加密和在android-and-ios中解密。所以我沒有一個Cipher對象來初始化流。我認爲這樣做不行? – softwaresupply

0

您引用了三種情況:將圖像轉換爲ImageView,將視頻轉換爲VideoView,將PDF轉換爲第三方應用程序。

圖像很簡單。確保您的解密邏輯可以爲您提供解密內容的InputStream,然後在BitmapFactory上使用適當的方法。

我不知道從加密源可靠地向VideoView提供視頻的方法。我知道有些人嘗試過嵌入HTTP服務器並對其進行流式傳輸。

您可以發佈ContentProvider,將PDF的解密內容提供給第三方應用程序。 This sample app只是讀取文件,但您可以使用相同的方法解密它。

所有這些都假設用戶是負責請求加密此內容的用戶,並且您已收集來自用戶的密碼短語。相反,如果您的願景是您正在嘗試DRM解決方案,那麼任何想通過逆向設計您的應用程序就能夠解密您的內容的人。

+0

好的。我使用這個算法:http://stackoverflow.com/questions/20531329/hot-to-encrypt-in-java-and-decrypt-in-android-and-ios對於我解密爲普通字節[]的圖像和使用它的BitmapFactory。有沒有關於視頻的想法?也許我可以將它們複製到本地應用程序文件目錄中,將其打開並立即刪除它?你能否介紹一下內容提供者的方法?也許一個外部PDF庫可以完成這項工作? – softwaresupply

相關問題