1

我正在尝试使用 Hex Key 进行 XOR 实现。当这段代码(语法明显变了,但是思路一样)用C执行,然后转成hex,结果是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)] );
4

1 回答 1

5

^结果是一个数字。您需要使用chr()将其转换回字符。

于 2012-06-11T04:10:18.797 回答