2

我有一个 Android 项目,它使用 C 库来解析某种类型的文件。我正在使用 AES 和 CipherInputStreams 和 CipherOutputStreams 为项目添加加密。问题是 Java 代码将文件名和描述符传递给 C 库,然后 C 库执行文件读取。照原样,如果文件是加密存储的,C 库只会将该文件作为垃圾读取。有没有办法将 CipherInputStream 传递给 C 代码以便处理解密?或者我应该只用Java解密文件并将其作为纯文本存储在私有存储中,然后将其文件描述符发送到C代码?这似乎相对低效。

4

1 回答 1

2

由于您可以修改 C 代码,我建议您直接在其中构建加密层。这样,您的 Java 代码就不会关心它是否位于加密文件之上。

如果您确实想在 Java 代码中使用该加密逻辑,那么我认为您需要在 Java 中进行 byte[] 读取并将 InputStream.read 的每个结果传递给您的 C 代码。您可能需要为此更改 API,并且需要一种方法在完成后告诉 C 代码。

于 2012-10-29T19:55:17.240 回答