是否有可能找到一个未知常量与一个只知道结果数组的未知数组进行异或运算?

Is it possible to find an unknown constant XORed with an unknown array knowing just the resulting array?

我有一个元素数组 A。它是通过按照以下公式对另一个数组 X 与常数值 P 进行异或计算得出的:

A[i] = X[i] xor P

A 已知,X 未知,P 未知,但所有元素 恒定。是否可以仅使用这些约束找到 P

不,因为 P 可以是任何东西。异或运算是交换的、分配的和结合的,所以下面的等式是等价的:

A[i] = X[i] xor P
X[i] = A[i] xor P
P = A[i] xor X[i]
etc...

如果 X 未知,则无论 P 为何,所有这些都是正确的。当然,如果知道任意一对 A[i] 和 X[i],就可以计算 P。

如果你在原始数组上有一个概率先验,那么你可以找到最有可能被使用的 P。简单地将给定数组与所有可能的 P 进行异或运算,然后找到使 Prob(A) 最大化的数组。

例如,如果您知道原始数组类似于英文文本,那么您可能会判断 "HELLO" 比 "IDMMN" 更有可能,因为 HELLO 是一个单词,但 IDMMN 不是。

如果您无法判断哪些输入数组彼此之间的可能性更大或更小,那么您就会陷入困境,因为每个可能的 P 的可能性都相同。

一个找不到 P 的简单示例是

X = [ 0, 1, 1] P = 1 => A = [ 1, 0, 0 ]
X = [ 2, 3, 3] P = 3 => A = [ 1, 0, 0 ]