/ / C JNIライブラリでのJava InputStreamの使用 - java、android、c、jni

CでJava InputStreamを使用するJNIライブラリ - java、android、c、jni

Cライブラリを使用するAndroidプロジェクトがあります特定の種類のファイルを解析します。 AESとCipherInputStreamsおよびCipherOutputStreamsを使用して、プロジェクトに暗号化を追加する作業をしています。問題は、Javaコードがファイル名と記述子をCライブラリに渡した後、Cライブラリがファイルの読み込みを実行することです。ファイルが暗号化されて保存されている場合、Cライブラリはそのファイルをゴミとして読みます。復号化が処理されるようにCipherInputStreamをCコードに渡す方法はありますか?それとも、単純にJavaでファイルを復号化して平文としてプライベートストレージに保存してから、そのためのファイル記述子をCコードに送信すればよいのでしょうか。それは比較的非効率的です。

回答:

回答№1は1

あなたはCコードを修正することができるので、私はあなたがそこに直接暗号化層を構築することをお勧めします。このようにしてあなたのJavaコードは暗号化されたファイルの上にあるかどうかを気にする必要はありません。

暗号化ロジックをJavaコードを読み、Javaでbyte []読み込みを行い、InputStream.readの各結果をCコードに渡す必要があると思います。おそらくこのためにAPIを変更する必要があるでしょう"終わったときのCコードです。