JNI XOR 加密 Eclipse 构建错误
JNI XOR Encryption Eclipse build error
我想使用 JNI 对字节或字符数组进行 XOR 运算符。我使用字节或字符数组和我必须用于加密或解密的密钥制作本机方法。对于单行 XOR,由于 "void value not ignored as it ought to be",我无法在 eclipse 中构建 C 文件。
我添加了 jchar *xor
来解决 void 错误,但我又得到了一个错误 "invalid use of void expression"
我无法解决这个问题。这是我的 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
的类型定义,jobject
是类型定义,void*
是类型定义。可以是任何东西,也可以是伪装成虚空指针的独角兽
您不能使用 _key[_keyByteIndex]
取消引用它。您必须使用 (*env)->GetCharArrayElements
,这将 return 您想要的:jchar*
.
我建议你看看你正在使用的jni.h
,它应该会给你所有你需要的答案。
我想使用 JNI 对字节或字符数组进行 XOR 运算符。我使用字节或字符数组和我必须用于加密或解密的密钥制作本机方法。对于单行 XOR,由于 "void value not ignored as it ought to be",我无法在 eclipse 中构建 C 文件。
我添加了 jchar *xor
来解决 void 错误,但我又得到了一个错误 "invalid use of void expression"
我无法解决这个问题。这是我的 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
的类型定义,jobject
是类型定义,void*
是类型定义。可以是任何东西,也可以是伪装成虚空指针的独角兽
您不能使用 _key[_keyByteIndex]
取消引用它。您必须使用 (*env)->GetCharArrayElements
,这将 return 您想要的:jchar*
.
我建议你看看你正在使用的jni.h
,它应该会给你所有你需要的答案。