Шифрование Xor в PHP

Я новичок в шифровании Xor, и у меня возникли проблемы со следующим кодом:

function xor_this($string) {

// Let's define our key here
 $key = ('magic_key');

 // Our plaintext/ciphertext
 $text =$string;

 // Our output text
 $outText = '';

 // Iterate through each character
 for($i=0;$i<strlen($text);)
 {
     for($j=0;$j<strlen($key);$j++,$i++)
     {
         $outText .= $text{$i} ^ $key{$j};
         //echo 'i='.$i.', '.'j='.$j.', '.$outText{$i}.'<br />'; //for debugging
     }
 }  
 return $outText;
}

Когда я запускаю его, он работает для обычных строк, например ' dog ', но он работает только частично для строк, содержащих числа, например,' 12345 '.

Чтобы продемонстрировать ...

xor_this ('dog') = 'UYV'

xor_this ('123') = ''

Также интересно отметить, что xor_this (xor_this ('123')) = '123', как я и ожидал. Я почти уверен, что проблема кроется в моем шатком понимании побитовых операторов ИЛИ, возможно, в том, как PHP обрабатывает строки, содержащие числа. Держу пари, что там есть кто-то умный, который точно знает, что здесь не так. Спасибо.

РЕДАКТИРОВАТЬ №1: Это не совсем «шифрование». Я думаю, что обфускация - правильный термин, чем я и занимаюсь. Мне нужно передать код, содержащий несущественные данные от пользователя, чтобы они не могли легко его изменить. Они выполняют запланированное действие в автономном режиме и отправляют свое время на онлайн-табло с помощью этого кода. Автономная активность скрывает их время (в миллисекундах). Мне нужно написать сценарий, чтобы получить этот код и вернуть его в строку, содержащую их время.

8
задан e-sushi 22 July 2013 в 23:34
поделиться