Я рассмотрел некоторые примеры XOR и не смог найти ответ.Способ вокруг моего 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];
}
}
У меня возникли проблемы при получении вокруг необходимости открытого текста ых size (std :: string original в этом случае).
Без, мы надеемся, кардинально изменим способ, которым я выполняю алгоритм, есть ли способ обойти это?
Заранее благодарен!
Поскольку шифрование XOR выполняется на границах octect/byte, len (input) = len (output) - или что-то не так. – user2864740
Обычный старый C++ будет делать то, что вы сказали, но я ожидаю, что PHP может подумать, что он лучше знает, что вы имели в виду. Если действительно 'len (input)! = Len (output)', то я бы ожидал, что PHP делает некоторые преобразования кодировки (однобайтовые для некоторого unicode, возможно?) –