java 使用 byte[] 大小键对单个字节进行异或运算

java xor over a single byte with a byte[] size key

我想分别对每个字节应用异或并将它们存储在某个内存位置的特定字节中。

例如,我有一个字符串“0”,我正在将它转换为 ASCII,然后需要使用多字节密钥(例如“243”)对其应用异或,结果数据必须是单个字节.这甚至可能吗?

private byte[] xorWithKey(byte[] a, byte[] key) {
    byte[] out = new byte[a.length];
    for (int i = 0; i < a.length; i++) {
        out[i] = (byte) (a[i] ^ key[i%key.length]);
    }
    return out;
}

现在我正在使用这个片段,它接受字节数组和 returns 字节数组,这工作正常,但我想在单个字节上实现这一点,如:

private byte xorWithKey(byte a, byte[] key)

你有一个密钥数组,可以根据你从数组中选择密钥的选择,使用许多密钥加密输入byte

如果你想用数组中存在的所有密钥加密输入byte,你可以使用下面的方法,其中加密函数使用所有密钥通过 xor 迭代进行加密

private byte xorWithKey(byte a, byte[] key) {
byte out=a;
for (int i = 0; i < key.length; i++) {
    out = (byte) (out ^ key[i]);
}
return out;
}