【发布时间】:2016-06-06 18:23:58
【问题描述】:
我想使用 JNI 对字节或字符数组进行 XOR 运算符。我使用字节或字符数组以及必须用于加密或解密的密钥来制作本机方法。对于单行异或,我无法在 Eclipse 中构建 C 文件,因为“空值不应被忽略”。
我添加了jchar *xor 来解决 void 错误,而不是我得到一个错误“无效使用 void 表达式”
我无法解决这个问题。这是我的 c 代码。
int
Java_packagename_classname_encryption(JNIEnv* env, jobject obj,
jcharArray buffer, jint offset,
jint length, jcharArray _key, jint keylength){
jint temp,i ;
jint _keyByteIndex = 0;
jcharArray xor[length] ;
for(i=0; i<length + offset; ++i){
/*char temp = buffer[i];
temp ^= _key[_keyByteIndex];
buffer[i] = (char) temp;*/
buffer[i] = (jchar) (buffer[i] ^ _key[_keyByteIndex]);
if (_keyByteIndex + 1 >=keylength){
_keyByteIndex = 0;
}else{
++_keyByteIndex;
}
}
return 0;
}
【问题讨论】:
-
jcharArray不是您可以直接使用[]访问的数组。这是一个jobject,要访问实际的数组数据,您需要使用适当的JNI functions。 -
@Michael 谢谢,但请您为我写单行代码,以便我理解。我学习 jni.h 但无法理解完美的语法。
-
任何人都知道如何在 JNI C Native 代码中捕获异常我尝试使用简单的 try catch 但给出了许多错误,例如 :: - 'try' undeclared (first use in this function) - 每个未声明的标识符对于它出现的每个函数只报告一次 - 预期的';' '{' 标记之前 - 语句无效 'try' - 符号 'try' 无法解析 - 缺少 ';'
-
C 没有例外。你的意思是你想在你的 C 代码中捕获 Java 异常,那么你应该在我在第一条评论中链接到的页面上查找
ExceptionCheck和ExceptionClear。
标签: android c eclipse encryption java-native-interface