2
首先,我嘗試使用Cipher Class,但由於性能,我必須放棄它。密碼類產生大量實例和GC崩潰。 另一種選擇是使用NDK,所以我設法建立了openssl-android。 現在與libcrypto.so和libssl.so建立我不知道如何將它們與我的項目中的一個新的.c文件鏈接,以使我需要在Java端的ecryption函數的包裝。爲Android的libcrypto.so函數製作JNI包裝器
這是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)
在此先感謝,抱歉如果我的英文不是 最好。
感謝您的快速回復,我會閱讀並嘗試JavaCPP,看看會發生什麼 – maxiruani
鏈接到JavaCPP存儲庫轉移到github:https://github.com/bytedeco/javacpp –
@ maxiruani,它的工作?你有任何JNI包裝工作樣本? – Sharath