Я новичок в шифровании 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: Это не совсем «шифрование». Я думаю, что обфускация - правильный термин, чем я и занимаюсь. Мне нужно передать код, содержащий несущественные данные от пользователя, чтобы они не могли легко его изменить. Они выполняют запланированное действие в автономном режиме и отправляют свое время на онлайн-табло с помощью этого кода. Автономная активность скрывает их время (в миллисекундах). Мне нужно написать сценарий, чтобы получить этот код и вернуть его в строку, содержащую их время.