PHP中带键的XOR字符串
我需要对PHP中的字符串/文本进行XOR运算,然后使用base64编码,但出现了一些问题:PHP中带键的XOR字符串,php,Php,我需要对PHP中的字符串/文本进行XOR运算,然后使用base64编码,但出现了一些问题: <?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
<?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;
}
?>
我做错了什么;
$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
$key='frtkj';
$key_length=strlen($key);
$encoded_data=base64_decode($mustget);
$result='';
$length=strlen($encoded_data);
对于($i=0;$i<$length;$i++){
$tmp=$encoded_数据[$i];
对于($j=0;$j<$key\u length;$j++){
$tmp=chr(ord($tmp)^ord($j]);
}
$result.=$tmp;
}
echo$result;//乔希
我相信您可以将其反转并创建一个函数,用于“加密”数据;-) 我正在努力解密一个在野外使用“加密”与PHP管理面板通信的恶意软件:问题是,你是如何得到这个结果的?@xtmtrx:“解码字符串中的每个字符都是按顺序对我们之前识别的密钥的每个字符进行异或运算的”。因此,您应该
xor
每个数据字符和每个键字符1。数据是Base64解码的2。解码字符串中的每个字符按顺序与我们之前识别的键的每个字符异或。在Ruby中,它看起来是这样的:“A.xor(“f”).xor(“r”).xor(“t”).xor(“k”).xor(“j”)@xtmtrx:right“A.xor(“f”).xor(“r”).xor(“t”).xor(“k”).xor(“j”)
——您的朋友是具有每个关键字符的数据字符,而不是具有一个模的数据字符!
$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