最初にCipher Classを使用してみましたが、パフォーマンスのために破棄する必要があります。Cipher Class は多くのインスタンスを生成し、GC が崩壊します。もう 1 つの方法は NDK を使用することです。そのため、openssl-androidをビルドすることができました。libcrypto.so と libssl.so がビルドされたので、プロジェクト内の新しい .c ファイルとそれらをリンクして、Java 側で必要な暗号化関数のラッパーを作成する方法がわかりません。
これは私が必要とする libcrypto.so の機能です:
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, const int enc);
ラッパーは次のようになります: Java 側:
public static native byte[] AESEncrypt(byte[] in, byte[] key, byte[] ivec, int enc);
ネイティブ ラッパー (共有ライブラリを含む .c ファイル側)
jbyteArray Java_com_myApp_Main_AESEncrypt(JNIEnv* env, jobject this, jbyteArray in, jbyteArray key, jbyteArray ivec, jint enc)
よろしくお願いします。私の英語が上手でない場合は申し訳ありません。