我正在尝试使用Hex键进行XOR实现。当这个代码(语法明显改变,但同样的想法)在C中执行,然后转换为十六进制时,结果是 44 D6 B4 7E
但是当我在PHP中运行此代码时,我得到了 36 32 31 31
很明显,每个$ string索引都会返回一个整数,但是为什么(对我而言)并不是很清楚。
这是我的PHP代码:
<?php
$text = "data";
$key = array(0x20, 0xB7, 0xC0, 0x1F);
function xor_encrypt($string, $key) {
for($i=0; $i<strlen($string); $i++) {
$string[$i] = ord($string[$i]) ^ $key[$i % sizeof($key)];
}
return $string;
}
echo xor_encrypt($text, $key);
?>
这是C代码
BYTE m_btKey[4] = { 0x20, 0xB7, 0xC0, 0x1F };
for ( UINT i = 0; i < m_uDataLen; ++i )
m_szData[i] ^= ( m_btKey[i % sizeof(m_btKey)] );
答案 0 :(得分:5)
^
会产生一个数字。您需要使用chr()
将其转换回角色。