在 Java 程式設計中,利用位元運算進行簡易加密是一項基礎且實用的技巧。異或(XOR)運算因其「加密與解密使用相同操作」的特性,常被用於教學示範或輕量級資料混淆。本文將透過完整範例,展示如何應用 XOR 運算子對字串進行加密與解密。
XOR 運算具有以下關鍵特性:對任意值 A 與金鑰 K,若 C = A ^ K,則 C ^ K = A。這意味著同一組金鑰既能加密也能解密。程式中將字串轉為字元陣列,逐一與指定整數(如 20000)進行 XOR 運算,即可得到加密後的字串;再次執行相同邏輯即可還原。
import java.util.Scanner;
public class XorEncryption {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("請輸入欲加密/解密的英文字串:");
String input = scanner.nextLine();
char[] chars = input.toCharArray();
final int KEY = 20000; // 自訂金鑰
for (int i = 0; i < chars.length; i++) {
chars[i] = (char) (chars[i] ^ KEY);
}
String result = new String(chars);
System.out.println("處理結果:" + result);
}
}
輸入:www.example.com
輸出(加密後):駛駛駛與唏唏嗶嗶與乃唏唏
再次輸入上述亂碼並執行程式,即可還原為原始網址。
20000 超出基本多語言平面(BMP)範圍,實際運作時 Java 會取低 16 位,等同於 20000 & 0xFFFF = 34464;建議明確使用 char 範圍內的金鑰(0~65535)。XOR 運算展示了位元運算在資料轉換上的高效特性。理解其原理有助於深入學習對稱式加密、校驗碼演算法等進階主題。實務開發中,請採用 AES、RSA 等經過驗證的加密標準。