字符串的XOR更快

时间:2017-12-01 10:46:01

标签: c# xor

我想知道是否有人知道更快的XOR字符串方式。

我当前的DoXor()函数如下所示:

private string DoXor(byte[] s, string key)
{
    string outText = "";
    for(int i = 0; i<s.Length;)
    {
        for(int j = 0; (j<key.Length && i<s.Length); j++, i++)
        {
            outText += (char) (s[i] ^ key.ToCharArray()[j]);
            Console.WriteLine(j);
        }
    }

    return outText;
}

并且它是无法缓慢的(超过2分钟)。为了比较,我从我的网站上的PHP脚本接收数据,并使用函数

在<0.2秒内管理XOR。
function doXor($string, $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) && $i<strlen($text)); $j++,$i++)
        {
            $outText .= $text{$i} ^ $key{$j};
            //echo 'i=' . $i . ', ' . 'j=' . $j . ', ' . $outText{$i} . '<br />'; // For debugging
        }
    }
    return $outText;
}

我正在解密PHP脚本中的一些数据,由base64_encode(doXor(base64_encode($data), $key))加密,$data是磁盘上DLL文件的内容,$key是MD5哈希的前8个字符

我正在XORing的数据大小约为2.5MB

0 个答案:

没有答案