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

Xor encryption in PHP server and c++ client

本文关键字:加密 客户端 服务器 C++ PHP      更新时间:2023-10-16

我有一个使用 XOR 加密将加密数据发送到我的站点的 c++ 客户端。但是结果我在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++ 中获得相同的结果。