所以,我正在创建一个LorenzSZ40模拟器。而且我还处于创建它的早期阶段。事实是我使用byte[]
数组来存储纯文本和关键数据。
例如我有这个
byte[] plainText = {1, 0, 1, 0, 0};
和
byte[] key = {1, 1, 1, 0, 1};
当XOR的时候,结果应该是0, 1, 0, 0, 1
但问题是我无法在^
上使用byte[]
运算符。
public static byte[] xor(byte[] plainText, byte[] key) {
byte[] result = new byte[Math.min(plainText.length, key.length)];
for (int i = 0 ; i < result.length ; i++) {
result[i] = (byte) (((int) plainText[i]) ^ ((int) key[i]));
}
return result;
}
public static void main(String[] args) {
String pt = "10100";
String key = "11011";
byte[] som = pt.getBytes();
byte[] k = key.getBytes();
//0, 1, 1, 1, 1
String nm = new String(xor(som, k));
System.out.println(xor(som, k));
}
这是我尝试过的代码。当我运行它时我只得到[B@3d494fbf
如果我要使用
String nm = new String(xor(pci, key));
System.out.println(new String(nm));
而不是
String nm = new String(xor(som, k));
System.out.println(xor(som, k));
我根本不会得到任何东西。
我的问题是,我该如何做对?