2012-06-21 114 views
0

在我的項目中,我使用自定義android設備,爲了安全起見,我必須加密SD卡上的所有文件。我正在使用AES-128位加密,但解密和打開文件需要很長時間。打開存儲在SD卡上的大加密的pdf文件

對於我在動態解密中使用的視頻,使用CipherInputStreamCipherOutputStream和代理服務器。這是可能的大PDF文件?

一個12 MB的pdf文件需要大約40秒才能解密,因此在完全解密之後打開文件不是一個選項。另外,我不想將解密的文件保存在設備的任何位置。是否可以像視頻一樣打開部分pdf文件?

我試過在android中使用完整的磁盤加密,但它沒有在我的自定義設備上工作,只顯示一個綠色的機器人,之後什麼也沒有發生。

在此先感謝。

回答

2

如果您只是加密了整個文件,而您的查看器應用程序/庫期望獲取整個文件,而不是真的。如果您使用PDF加密技術對文件內的每個對象進行加密,則可以解密並按需顯示。

你究竟想在這裏實現什麼?這些文件是你的應用程序的一部分?如果你只是想保護SD卡上的數據,有辦法自動做到這一點,但他們需要一個紮根設備。例如LUKS Manager

+0

是的那些文件是我的應用程序的一部分。我有自定義android設備,我希望這些文件只能通過這些設備來查看。我正在加密文件,以便用戶不能將它們複製到其他設備。 如前所述,我對所有文件都使用AES-128位加密。 – Nishant

+0

密鑰存儲在哪裏?如果它在設備上,他們總是可以提取它並解密文件。 –

+0

用戶將輸入一些PIN或密碼,用於首先解密密鑰,然後主要內容將可用。加密的密鑰存儲在設備的某個臨時位置。 – Nishant

0

之前我在模擬器上測試過。在實際設備上,解密花費的時間要少得多(對於12 MB〜6秒)並且可以接受。最後我做了以下操作: -

對於視頻和音頻,我使用流式傳輸到mxPlayer。對於無法在部分中顯示的大文件,我只對文件的一部分進行了加密。加密大約10MB的文件使其無法使用。

這些文件被保存到一些隱藏的臨時位置,一旦不需要它們就會被刪除。

設備上仍然需要適當的應用程序,以便Android可以檢測到並在需要時打開它們。就像一些視頻播放器在從我的應用程序中打開視頻但mxPlayer沒有工作時一樣。