java 多个异或

java multiple XOR

我有 8 个字符串,每个字符串包含 32 位二进制字(编号从 w-8 到 w-1

然后我需要根据公式对这8个二进制字进行异或运算:

wi := (wi−8 ⊕ wi−5 ⊕ wi−3 ⊕ wi−1 ⊕ φ ⊕ i) <<< 11(i 的范围从 0 到 131)

前4项是32位二进制字(串)

φ = 0x9e3779b9(十六进制)

我正在为我的项目使用它来创建用于加密的子密钥,但我不知道如何一次对 6 个项执行异或运算。

感谢任何帮助。

您的一些要求不清楚。也许这将有助于展示您可以使用的技术。

// I have 8 strings each containing 32 bit binary words (numbered from w-8 to w-1)
String [] strings = new String[] {
        "01000010101010100100001010101010",
        "01000010101010100100001010101010",
        "01000010101010100100001010101010",
        "01000010101010100100001010101010",
        "01000010101010100100001010101010",
        "01000010101010100100001010101010",
        "01000010101010100100001010101010",
        "01000010101010100100001010101010"
};
// Make Integers out of them.
List<Integer> ints = Arrays.stream(strings).map(s -> Integer.parseInt(s, 2)).collect(Collectors.toList());
// Reference specific ones by name.
Integer w8 = ints.get(7);
Integer w5 = ints.get(4);
Integer w3 = ints.get(2);
Integer w1 = ints.get(0);
int φ = 0x9e3779b9;


public void test(String[] args) {
    for ( int i = 0; i <= 131; i++ ) {
        int wi = (w8 ^ w5 ^ w3 ^ w1 ^ φ ^ i) << 11;
        System.out.println(Integer.toBinaryString(wi));
    }
}