#android #java-native-interface
#Android #java-native-интерфейс
Вопрос:
Я хотел бы изменить
Cipher cipher = Cipher.getInstance("DES");
в cpp-код в jni.Как это сделать?
Ответ №1:
JNIEnv *jni; //Comes from somewhere
jclass cl = jni->FindClass("javax/crypto/Cipher");
jmethodID MID = jni->GetStaticMethodID(cl, "getInstance", "(Ljava/lang/String)Ljavax/crypto/Cipher;");
jstring s = jni->NewStringUTF("DES");
jobject cipher = jni->CallStaticObjectMethod(cl, MID, s);
Это исключает обработку ошибок.
Комментарии:
1. Большое вам спасибо! Я допускаю ошибку, когда пишу CallStaticObjectMethod(cl, MID, s) в CallObjectMethod(cl, MID, s) .
Ответ №2:
Другой альтернативой было бы использовать собственный код для шифрования, например, OpenSSL.
Обязательное предупреждение: не используйте DES.
Комментарии:
1. Потому что ключ довольно короткий и может быть грубо введен менее чем за день. Плюс есть более эффективные атаки.