java使用异或实现变量互换和异或加密解密示例


### Java 使用异或实现变量互换

异或运算(XOR)有一个有趣的性质,即对于任意整数 `a` 和 `b`,有 `a ^ b ^ b = a` 和 `a ^ a = 0`。利用这一性质,我们可以不使用临时变量来交换两个变量的值。


public class SwapWithXOR {
    public static void main(String[] args) {
        int a = 5, b = 10;
        System.out.println("Before swap: a = " + a + ", b = " + b);

        // 使用异或运算交换a和b的值
        a = a ^ b;
        b = a ^ b; // 此时b变为原来的a
        a = a ^ b; // 此时a变为原来的b

        System.out.println("After swap: a = " + a + ", b = " + b);
    }
}

### Java 使用异或进行简单加密解密

异或也可以用于简单的加密解密过程,因为 `x ^ key` 可以用来加密 `x`,而 `(x ^ key) ^ key` 则可以解密回 `x`。但请注意,这种加密方法非常基础,仅适用于理解异或的性质,不适合实际的安全加密需求。


public class XOREncryptDecrypt {
    private static final int KEY = 0b1101001; // 示例密钥

    public static int encrypt(int value) {
        return value ^ KEY;
    }

    public static int decrypt(int encryptedValue) {
        return encryptedValue ^ KEY;
    }

    public static void main(String[] args) {
        int originalValue = 65; // ASCII码中的'A'
        System.out.println("Original: " + originalValue + " (ASCII: " + (char)originalValue + ")");

        int encrypted = encrypt(originalValue);
        System.out.println("Encrypted: " + encrypted);

        int decrypted = decrypt(encrypted);
        System.out.println("Decrypted: " + decrypted + " (ASCII: " + (char)decrypted + ")");
    }
}

在这个例子中,我们定义了一个简单的加密和解密函数,它们使用了一个固定的密钥 `KEY`。我们加密了ASCII码中的 `'A'`(值为65),然后解密回原来的值,并打印出相应的字符。