首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 異或運算巧妙實現變量交換與簡易加密

     編輯:Java 相關知識

核心原理:XOR 的自逆性

a ^ b ^ b = a —— 同一數值異或兩次還原自身。利用這一性質,無需臨時變量即可交換兩數,也能構建極簡加密。

變量交換完整示例

public class VariableExchange {
    public static void main(String[] args) {
        long A = 12345, B = 67890;
        System.out.println("交換前: A=" + A + ", B=" + B);

        A = A ^ B;
        B = B ^ A; // 相當於 B ^ (A ^ B) = A
        A = A ^ B; // 相當於 (A ^ B) ^ A = B

        System.out.println("交換後: A=" + A + ", B=" + B);
    }
}

數學推導:

a1 = a ^ b
b  = a1 ^ b = (a ^ b) ^ b = a
a  = a1 ^ b = a1 ^ a = (a ^ b) ^ a = b

異或加密/解密原理

  • 加密:cipher = plaintext ^ key
  • 解密:plaintext = cipher ^ key(同一操作)

適用於非極高安全要求的輕量級混淆(如配置文件敏感字段、遊戲存檔防改)。

注意事項與避坑

  1. 同一變量交換失效:a ^= a 會歸零,交換前必須確保 a != b(地址不同);
  2. 基本類型適用:int/long/char 等均可,引用類型不可直接異或;
  3. Key 管理:加密場景下 Key 必須妥善保管,長度建議 ≥ 數據長度(一次一密最安全)。

Scanner 補充:控制台輸入範例

Scanner sc = new Scanner(System.in);
System.out.print("請輸入 A: ");
long A = sc.nextLong();
System.out.print("請輸入 B: ");
long B = sc.nextLong();

異或技巧雖老,但在嵌入式、演算法競賽、輕量級混淆中依然閃光——理解本質,靈活應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved