android - JNI XOR 加密 Eclipse 构建错误

标签 android c eclipse encryption java-native-interface

我想使用 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;
}

最佳答案

jcharArrayjarray 的 typedef,jarray 是 jobject 的 typedef,而 jobjectvoid* 的 typedef >。它可以是任何东西,它可以是伪装成空指针的 unicorn 。

您不能使用 _key[_keyByteIndex] 取消引用它。您必须使用 (*env)->GetCharArrayElements,它将返回您想要的内容:jchar*

我建议您查看您正在使用的jni.h,它应该会为您提供所需的所有答案。

关于android - JNI XOR 加密 Eclipse 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35602555/

相关文章:

java - 如何在 4.0.3 中更改 fontfamily?

c - 在C中用栈实现链表

c++ - 使用 Arduino Mega 和 Simple-H HV Motor Shield 控制直流电机

Eclipse、Macos 10.8 和 C++11

android - 正确覆盖 proguard 选项

android - 如何将 Picasso 与 RecyclerView 的自定义适配器一起使用

c - C 中指针的地址不匹配

eclipse - "Open with sceenbuilder"无法找到

java - 未找到 Android Robolectric 软件包。未知包装 : apk

android 搜索对话框不工作