Печать закодированной строки - PullRequest
4 голосов
/ 27 декабря 2011

Я смотрел на этот вопрос ( Это какой-то взлом CakePHP? ), и когда я смотрел на код, я увидел следующую строку:

$wp_cw_kses_split = '>=^/E]u*PDAF$!V'^']O;N18*L%*"2MN8';

Когда я повторяю это, оно повторяет create_function.

Как это работает? Я имею в виду, как это даже строка? Внутри него нет спасений '.

Демо: http://ideone.com/rk2Og

Ответы [ 3 ]

3 голосов
/ 27 декабря 2011

Он выполняет побитовую операцию XOR для двух строк, '>=^/E]u*PDAF$!V' и ']O;N18*L%*"2MN8'.

var_dump('>' ^ ']'); // string(1) "c"
var_dump('=' ^ 'O'); // string(1) "r"
var_dump('^' ^ ';'); // string(1) "e"
// ... etc

Битовая операция XOR выполняется для кода символов ASCII, поэтому для первого из них

">" = 62 (ASCII) = 0111110
 ^  = XOR          -------
"]" = 93 (ASCII) = 1011101
==========================
"c" = 99 (ASCII) = 1100011
3 голосов
/ 27 декабря 2011

Это побитовая операция XOR для строк, что означает, что значения символов ascii являются XORed. Ручной пример 2

У вас есть две разные строки: >=^/E]u*PDAF$!V и ]O;N18*L%*"2MN8

2 голосов
/ 27 декабря 2011

Это выражение, операция двух строк:

       1: '>=^/E]u*PDAF$!V'
operator: ^ - bitwise XOR
       2: ']O;N18*L%*"2MN8'

Как вы можете видеть, ' не являются "выходом из-под контроля", но это сделано намеренно.Это выглядит только немного загадочно, поэтому мозг воспринимает это не как три вещи, а как одну вещь (визуальный рисунок конца строки слишком притягателен).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...