PHP 异或字符串
PHP XOR strings
我从 an answer on PPCG 看到这段代码:
echo BeeABBeeoBodBaBdOdPQBBgDQgDdp^"\n\n\t8b\n\n\t\nb&\nb b \n%%nb%%%\n%\nQ";
我知道 PHP 将未定义的常量转换为字符串,所以等效代码是:
echo 'BeeABBeeoBodBaBdOdPQBBgDQgDdp' ^ "\n\n\t8b\n\n\t\nb&\nb b \n%%nb%%%\n%\nQ";
它们的输出是:
Holy Hole In A Donut, Batman!
有人可以向我解释这两个字符串的异或如何产生那行输出吗?
根据 this official example,在字符串上使用 XOR
将对每个相应字符的 ASCII 值进行操作,因此在您的示例中:
B
^\n
=66^10=72=H
;
e
^ \n
= 101 ^ 10 = 111 = o
;
e
^ \t
= 101 ^ 9 = 108 = l
;
- ...
这只是在整个字符串中一次对两个字符应用 xor
。这是通过转换为 ASCII 来完成的,然后结果是 ascii 值,即两个转换项之间的值差。请参阅 PHP 文档中的 example 2。所以结果:
"B" ^ "\n" => 66 ^ 10 => 72 => "H"
整个字符串依此类推。
我从 an answer on PPCG 看到这段代码:
echo BeeABBeeoBodBaBdOdPQBBgDQgDdp^"\n\n\t8b\n\n\t\nb&\nb b \n%%nb%%%\n%\nQ";
我知道 PHP 将未定义的常量转换为字符串,所以等效代码是:
echo 'BeeABBeeoBodBaBdOdPQBBgDQgDdp' ^ "\n\n\t8b\n\n\t\nb&\nb b \n%%nb%%%\n%\nQ";
它们的输出是:
Holy Hole In A Donut, Batman!
有人可以向我解释这两个字符串的异或如何产生那行输出吗?
根据 this official example,在字符串上使用 XOR
将对每个相应字符的 ASCII 值进行操作,因此在您的示例中:
B
^\n
=66^10=72=H
;e
^\n
= 101 ^ 10 = 111 =o
;e
^\t
= 101 ^ 9 = 108 =l
;- ...
这只是在整个字符串中一次对两个字符应用 xor
。这是通过转换为 ASCII 来完成的,然后结果是 ascii 值,即两个转换项之间的值差。请参阅 PHP 文档中的 example 2。所以结果:
"B" ^ "\n" => 66 ^ 10 => 72 => "H"
整个字符串依此类推。