使用二元运算的反向解密算法

Reverse decryption algorithm using binary operations

我有一个解密算法,其中 x 是一个 8 位整数:

function decrypt(x){
    return move(x, 2) ^ (move(x, 1) & move(x, 3));
}

function move(x, n) {
  return ((x >> (8 - n)) & 255) | ((x << n) & 255);
};

我想逆向操作,找到加密函数

这是不可能的,因为 decrypt 不是 bijection,也就是说,它是不可逆的。

以这些数字为例:

85, 91, 107, 109, 170, 173, 181, 182, 214, 218

如果您将这些数字中的 任何 传递给 decrypt,returned 值将为 255。因此,如果给定 255,将假设的 encrypt 必须 return?事实上,255 没有足够的信息告诉你它来自哪里。

这只是一个反例。还有其他数字组具有相同的 decrypt 输出。