2012-10-29 76 views
0

使用Java的InputStream我有一個使用C庫來解析出某種類型文件的Android項目。我正在使用AES和CipherInputStreams和CipherOutputStreams爲項目添加加密。問題是Java代碼將文件名和描述符傳遞給C庫,然後C庫執行文件讀取。現在,如果文件被加密存儲,C庫會將該文件讀取爲垃圾。有沒有辦法將CipherInputStream傳遞給C代碼,以便解密被處理?或者我應該只用Java解密文件並將其作爲明文存儲在私有存儲中,然後將文件描述符發送給C代碼?這似乎相對低效。在C JNI庫

+0

你是否控制了C代碼?您可能需要修改API以實現您想要完成的任務 –

+0

是的,我可以控制C代碼。 – Dan

回答

1

既然你可以修改C代碼,我建議你直接在那裏建立加密層。這樣你的Java代碼就不會在乎它是否在加密文件之上。

如果你想有一個加密邏輯在Java代碼中,那麼我認爲你需要做的在Java中讀取字節[]和InputStream.read的每個結果傳遞給你的C代碼。您可能需要爲此更改您的API,並且需要一種方式在完成時告訴C代碼。

+0

謝謝你的幫助!我會嘗試這些選項。我只是在想要做什麼概念化方面遇到一些麻煩。 – Dan