我想使用 JNI 对字节或字符数组进行异或运算符。我使用字节或字符数组和 key 制作 native 方法,我必须使用它来加密或解密。对于单行 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
是 jarray
的 typedef,jarray 是 jobject
的 typedef,而 jobject
是 void*
的 typedef >。它可以是任何东西,它可以是伪装成空指针的 unicorn 。
您不能使用 _key[_keyByteIndex]
取消引用它。您必须使用 (*env)->GetCharArrayElements
,它将返回您想要的内容:jchar*
。
我建议您查看您正在使用的jni.h
,它应该会为您提供所需的所有答案。
关于android - JNI XOR 加密 Eclipse 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35602555/