Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JNI库中使用Java InputStream_Java_Android_C_Java Native Interface - Fatal编程技术网

在JNI库中使用Java InputStream

在JNI库中使用Java InputStream,java,android,c,java-native-interface,Java,Android,C,Java Native Interface,我有一个Android项目,它使用一个C库来解析某种类型的文件。我正在使用AES、CipherInputStreams和CipherOutputStreams为项目添加加密。问题是Java代码将文件名和描述符传递给C库,然后C库执行文件读取。按原样,如果文件是加密存储的,C库只会将文件作为垃圾读取。有没有一种方法可以将密码流传递给C代码,以便处理解密?或者我应该用Java解密文件并将其以明文形式存储在私有存储器中,然后将文件描述符发送到C代码中吗?这似乎效率相对较低。因为您可以修改C代码,所以我

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

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


如果您确实希望在Java代码中包含该加密逻辑,那么我认为您需要在Java中读取字节[],并将InputStream.read的每个结果传递给您的C代码。您可能需要为此更改API,并需要一种方法在完成时告知C代码。

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


如果您确实希望在Java代码中包含该加密逻辑,那么我认为您需要在Java中读取字节[],并将InputStream.read的每个结果传递给您的C代码。为此,您可能需要更改API,并需要一种在完成时告知C代码的方法。

您完全控制C代码吗?你可能需要修改API来完成你想要完成的事情是的,我可以控制C代码。你完全控制C代码吗?您可能需要修改API以实现您想要的功能是的,我可以控制C代码。谢谢您的帮助!我将尝试这些选项。我只是在构思该做什么时遇到了一些困难。谢谢你的帮助!我将尝试这些选项。我只是在构思该做什么时遇到了一些困难。