Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP撤消/反转XOR?_Php_Xor - Fatal编程技术网

如何使用PHP撤消/反转XOR?

如何使用PHP撤消/反转XOR?,php,xor,Php,Xor,我对异或的概念有点困惑。我有一个轻加密功能,我需要解密,我不知道如何让它正常工作 如果我的值最初是由以下内容生成的: $val = dechex($seed^$id); 然后,在其他地方,我有相应的$val和$seed,我如何生成$id?XOR是它自己的逆函数,因此您可以通过$seed再次对$val进行XOR并获得$id。不过,您可能需要首先在$val上运行hexdec。另一个有趣的异或事实:对值本身进行异或运算将使其为0。在汇编程序中编写时,在英特尔处理器上使用非常方便的技巧XOR EAX,

我对异或的概念有点困惑。我有一个轻加密功能,我需要解密,我不知道如何让它正常工作

如果我的值最初是由以下内容生成的:

$val = dechex($seed^$id);

然后,在其他地方,我有相应的$val和$seed,我如何生成$id?

XOR是它自己的逆函数,因此您可以通过
$seed
再次对$val进行XOR
并获得
$id
。不过,您可能需要首先在
$val
上运行
hexdec

另一个有趣的异或事实:对值本身进行异或运算将使其为0。在汇编程序中编写时,在英特尔处理器上使用非常方便的技巧
XOR EAX,EAX
实际上编译成一个单字节指令,而
MOV EAX,0
占用6字节(我想,自从我做汇编程序以来已经有一段时间了)。@Marc:我还相信,至少对于最近的AMD处理器,他们知道
XOR EAX,EAX
不使用
EAX
的旧值,因此不需要计算它。计算什么?EAX是一个寄存器,始终可用。不应该有任何东西需要计算。@Marc:它不会等待任何以前写入
EAX
的指令完成。希望Athlons记住,在这种情况下,飞行计算的结果需要忽略。否则,在执行XOR之后的某个时刻,您将得到一个非零EAX。