XOR string in PHP with key

I need an XOR line / text in PHP, base64 encodes it, but something goes wrong:

<?php $mustget = 'Kw4SCQ=='; $string = 'Josh'; echo("Must get: " . $mustget . "\n"); echo("We got: " . base64_encode(xor_this($string)) . "\n"); function xor_this($text) { $key = 'frtkj'; $i = 0; $encrypted = ''; foreach (str_split($text) as $char) { $encrypted .= chr(ord($char) ^ ord($key{$i++ % strlen($key)})); } return $encrypted; } ?> 

I get the following result, but I need to get "$ mustget":

 Must get: Kw4SCQ== We got: LB0HAw== 

What am I doing wrong?

+6
source share
1 answer
 $mustget = 'Kw4SCQ=='; $key = 'frtkj'; $key_length = strlen($key); $encoded_data = base64_decode($mustget); $result = ''; $length = strlen($encoded_data); for ($i = 0; $i < $length; $i++) { $tmp = $encoded_data[$i]; for ($j = 0; $j < $key_length; $j++) { $tmp = chr(ord($tmp) ^ ord($key[$j])); } $result .= $tmp; } echo $result; // Josh 

http://ideone.com/NSIe7K

I am sure that you can undo it and create a function that "glues" the data; -)

+10
source

All Articles