【发布时间】:2013-12-28 19:25:57
【问题描述】:
我查看了一些 XOR 示例,但无法找到答案。
这是我用于 PHP 的代码:
for($i=0;$i<strlen($text);)
{
for($j=0;($j<strlen($key) && $i<strlen($text));$j++,$i++)
{
$outText .= $text{$i} ^ $key{$j};
//echo 'i='.$i.', '.'j='.$j.', '.$outText{$i}.'<br />'; //for debugging
}
}
以及生成的 C++ 解密代码:
for (int i = 0; i < original.size();)
{
for (int j = 0; (j < key.size() && i < original.size()); j++, i++)
{
decrypted += encrypted[i] ^ key[j];
}
}
我无法解决对明文大小的需求(在本例中为 std::string original)。
如果不彻底改变我执行算法的方式,有没有办法解决这个问题?
提前致谢!
【问题讨论】:
-
由于 XOR 加密是在八进制/字节边界上完成的,所以 len(input) = len(output) - 或者有什么问题。
-
普通的旧 C++ 将完全按照您所说的那样做,但我希望 PHP 可能认为它更了解您的意思。如果真的是
len(input) != len(output),那么我希望 PHP 正在做一些字符集转换(也许是单字节到一些 unicode?)
标签: php c++ encryption xor