0

我想对二进制文件进行异或,但结果仍然是错误的异或异或示例脚本:

function _xor($text,$key){
    for($i=0; $i<strlen($text); $i++){
            for($j=0; $j<strlen($key);$j++){
                $text[$i] = $text[$i]^$key[$j];
        }
    }
    return $text;
}

这是结果:

10011110

应该导致之间的异或

01100001
01100010
--------
00000011

请给我正确的答案

4

1 回答 1

4
function _xor($text,$key){
    for($i=0; $i<strlen($text); $i++){
        $text[$i] = intval($text[$i])^intval($key[$i]);
    }
    return $text;
}

echo  _xor('01100001','01100010');

在你使用之前^,你应该先将 string 转换为 int

不需要使用两个错误的循环,只需一个即可。

于 2013-01-16T18:28:38.707 回答