使用二元运算的反向解密算法
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
输出。
我有一个解密算法,其中 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
输出。