Шифр Bruteforce XOR

Возможно ли взломать стандартный XOR-шифр?

Зная, что это:

* # (I @ К.И.

кодируется с помощью функции XOR

//
std::string CStringCoding::Xor( const std::string& strIn )
{
std::string sOut = "";

for(std::size_t loop = 0; loop < strIn.size(); loop++)
{
unsigned int iCharacter = static_cast<unsigned int>(strIn[loop] ^ sKey[loop % sKey.size()]);
sOut += iCharacter;
}

return sOut;
}

Могу ли я брутфорс с классическим подходом к списку слов?

Я думал о:

Сгенерировать список слов KEY

XOR *# (I @ К.И. с ключом, чтобы расшифровать его и получить строку

XOR STRING с ключом, чтобы шифровать его

Сравните недавно зашифрованную строку с входной зашифрованной строкой

Если они совпадают, ключ был найден

Я не проверял это, просто спрашивал, прежде чем я предприму действия и потрачу слишком много времени на то, что не сработает.

Благодарю.

0

Решение

Предполагая, что вы шифруете значимый читабельный текст, это можно сломать XOR шифр если злоумышленник будет иметь:

  1. зашифрованный текст, закодированный повторным использованием ключа (например, цикл% sKey.size ())
  2. 2 шифротекста, закодированных одним и тем же ключом

Частотный анализ может сломать оба случая.

Но это нормально для передачи открытого текста с действительно случайным ключом той же длины, что и сообщение. Это будет небьющийся шифр Одноразовый блокнот

OTP невосприимчив даже к атакам грубой силы. Просто попробуйте все ключи
дает все открытые тексты, все равно могут быть фактическим открытым текстом

2

Другие решения

Что вы подразумеваете под «шифром XOR»? Как сказал @varren, One Time Pad не ломается. Тем не менее, большинство шифров XOR в реальном использовании не являются OTP, а Потоковые шифры, такие как RC4. Эти шифры можно взломать, потому что ключ (как правило) короче сообщения, а поток ключей не является истинно случайным, а псевдослучайным. Потоковые шифры могут быть атакованы перебором, поскольку они не соответствуют требованиям для One Time Pad.

1

По вопросам рекламы [email protected]