📜  java xor - Java (1)

📅  最后修改于: 2023-12-03 14:42:17.039000             🧑  作者: Mango

Java XOR 加密解密

简介

XOR (Exclusive OR) 是一种二进制逻辑运算。在计算机科学中常常用于加密和解密算法。Java 中提供了对应的位运算符用于实现 XOR 加密解密算法。

实现代码
加密
public static String encryptXOR(String message, String key) {
    try {
        byte[] messageBytes = message.getBytes("UTF-8");
        byte[] keyBytes = key.getBytes("UTF-8");

        byte[] encryptedBytes = new byte[messageBytes.length];
        for (int i = 0; i < messageBytes.length; i++) {
            encryptedBytes[i] = (byte) (messageBytes[i] ^ keyBytes[i % keyBytes.length]);
        }

        return new String(encryptedBytes, "UTF-8");
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
解密
public static String decryptXOR(String encryptedMessage, String key) {
    try {
        byte[] encryptedBytes = encryptedMessage.getBytes("UTF-8");
        byte[] keyBytes = key.getBytes("UTF-8");

        byte[] decryptedBytes = new byte[encryptedBytes.length];
        for (int i = 0; i < encryptedBytes.length; i++) {
            decryptedBytes[i] = (byte) (encryptedBytes[i] ^ keyBytes[i % keyBytes.length]);
        }

        return new String(decryptedBytes, "UTF-8");
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
使用示例
String message = "Hello world";
String key = "mySecretKey";
String encryptedMessage = encryptXOR(message, key);
String decryptedMessage = decryptXOR(encryptedMessage, key);

// 输出加密后和解密后的字符串
System.out.println("加密前: " + message);
System.out.println("加密后: " + encryptedMessage);
System.out.println("解密后: " + decryptedMessage);
总结

XOR 加密解密算法简单高效,并且可以在很多场景下使用。但需要注意的是,如果密钥过于简单,容易被破解。因此,密钥需要具备一定的复杂度和随机性。