繁体   English   中英

PHP服务器和C ++客户端中的Xor加密

[英]Xor encryption in PHP server and c++ client

我有一个C ++客户端,它使用XOR加密将加密的数据发送到我的站点。 但是结果是我在php和c ++代码中有不同的值,但是我不明白为什么?

C ++代码段

string XOR(string value,string key)
{ 
    string text = "";
    DWORD k = 0;
    DWORD v = 0;
    DWORD klen = key.length();
    DWORD vlen = value.length();

    for ( DWORD v = 0; v < vlen; v ++ )
    {
        text +=  value[v] ^ key[k]; 
        k=(++k < klen ? k : 0);
    }

    return text;
}

php代码段:

public  function xorEncrypt( $InputString, $KeyPhrase )
{ 
    $textOut = "";
    $k = 0;
    $klen = strlen($KeyPhrase);

    for ( $i = 0; $i < strlen($InputString); $i++ )
    {
        $textOut .= chr(ord($InputString[$i]) ^ $KeyPhrase[$k]); 
        $k=(++$k < $klen ? $k : 0);
    }

    return $textOut;
}

任何人都可以帮我。 谢谢!

这可能与PHP没有DWORD类型有关,因此它正在对不同长度的整数执行XOR。 您可能必须逐字节执行XOR,才能在PHP和C ++中获得相同的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM