您好,登錄后才能下訂單哦!
Java Native方法(JNI)允許Java代碼與本地代碼(如C和C++)進(jìn)行交互
以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用Java Native方法實(shí)現(xiàn)加密和解密操作:
Encryption.java
的Java類,并聲明一個(gè)本地方法:public class Encryption {
static {
System.loadLibrary("encryption"); // 加載包含本地方法實(shí)現(xiàn)的庫(kù)
}
public native String encrypt(String plainText);
public native String decrypt(String encryptedText);
}
javac
命令編譯Encryption.java
文件,并使用javah
命令生成包含本地方法簽名的C頭文件:javac Encryption.java
javah -jni Encryption
encryption.c
的C文件,實(shí)現(xiàn)本地方法:#include <jni.h>
#include <string.h>
JNIEXPORT jstring JNICALL Java_Encryption_encrypt(JNIEnv *env, jobject obj, jstring plainText) {
const char *plainTextChars = (*env)->GetStringUTFChars(env, plainText, NULL);
int length = strlen(plainTextChars);
// 簡(jiǎn)單的加密算法:將每個(gè)字符的ASCII值加3
char *encryptedTextChars = (char *)malloc(length + 1);
for (int i = 0; i < length; i++) {
encryptedTextChars[i] = plainTextChars[i] + 3;
}
encryptedTextChars[length] = '\0';
jstring encryptedText = (*env)->NewStringUTF(env, encryptedTextChars);
(*env)->ReleaseStringUTFChars(env, plainText, plainTextChars);
free(encryptedTextChars);
return encryptedText;
}
JNIEXPORT jstring JNICALL Java_Encryption_decrypt(JNIEnv *env, jobject obj, jstring encryptedText) {
const char *encryptedTextChars = (*env)->GetStringUTFChars(env, encryptedText, NULL);
int length = strlen(encryptedTextChars);
// 簡(jiǎn)單的解密算法:將每個(gè)字符的ASCII值減3
char *decryptedTextChars = (char *)malloc(length + 1);
for (int i = 0; i < length; i++) {
decryptedTextChars[i] = encryptedTextChars[i] - 3;
}
decryptedTextChars[length] = '\0';
jstring decryptedText = (*env)->NewStringUTF(env, decryptedTextChars);
(*env)->ReleaseStringUTFChars(env, encryptedText, encryptedTextChars);
free(decryptedTextChars);
return decryptedText;
}
gcc
命令編譯encryption.c
文件,并生成一個(gè)名為libencryption.so
的共享庫(kù):gcc -shared -fPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux encryption.c -o libencryption.so
Encryption
類進(jìn)行加密和解密操作:public class Main {
public static void main(String[] args) {
Encryption encryption = new Encryption();
String plainText = "Hello, World!";
String encryptedText = encryption.encrypt(plainText);
String decryptedText = encryption.decrypt(encryptedText);
System.out.println("Plain text: " + plainText);
System.out.println("Encrypted text: " + encryptedText);
System.out.println("Decrypted text: " + decryptedText);
}
}
javac Main.java
java -Djava.library.path=. Main
注意:這個(gè)示例使用了簡(jiǎn)單的加密和解密算法,僅用于演示目的。在實(shí)際應(yīng)用中,您需要使用更安全的加密算法,如AES等。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。