我有一个Android项目,它使用C库来解析某种类型的文件。我正在使用AES和CipherInputStreams以及CipherOutputStreams为项目添加加密。问题是Java代码将文件名和描述符传递给C库,然后C库执行文件读取。如果文件是加密存储的,C库只是将文件读取为垃圾。有没有办法将CipherInputStream传递给C代码,以便处理解密?或者我应该只用Java解密文件并将其作为纯文本存储在私有存储中,然后将文件描述符发送到C代码?这似乎效率相对较低。
答案 0 :(得分:1)
由于您可以修改C代码,我建议您直接在那里构建加密层。这样,您的Java代码就不会关心它是否在加密文件之上。
如果您确实希望在Java代码中使用该加密逻辑,那么我认为您需要在Java中执行byte []读取并将InputStream.read的每个结果传递给您的C代码。您可能需要为此更改API,并且需要在完成后告诉C代码。