[英]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.