PHP XOR строки

Я видел этот код от ответ на 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!

Может кто-нибудь объяснить мне, как XOR этих двух строк производит эту строку вывода?

0

Решение

В соответствии с этот официальный пример, с помощью XOR Строки on будут работать со значениями ASCII каждого уважаемого символа, поэтому в вашем примере:

  • B ^ \n = 66 ^ 10 = 72 = H;
  • e ^ \n = 101 ^ 10 = 111 = o;
  • e ^ \t = 101 ^ 9 = 108 = l;

Результат 3в4л

3

Другие решения

Это просто применение xor по два символа за раз по всей строке. Это делается путем преобразования в ASCII, и в результате получается значение ASCII, которое представляет собой разницу значений между двумя преобразованными элементами. Увидеть пример 2 в документации PHP. Итак, результат:

"B" ^ "\n" => 66 ^ 10 => 72 => "H"

И так далее по всей строке.

1

По вопросам рекламы [email protected]