У Страуструпа в одной из его книг есть такое упражнение - надо написать прогу для примитивного шифрования текста. Кодом каждому символу X является X^key[pos], где key - ключ, вводимый как аргумент в коммандной строке. Программа использует циклически символы из key до тех пор, пока все не зашифровали. Так как на консоль непечатаемые символы выводить - не самая лучшая идея, у меня это упражнение шифровало файлы. Главная работа делалась таким вот кодом :
| Код | for(;;) { in.get(c); if ( in.eof() ) break; out.put(c^key[pos]); pos = ( pos < len ) ? pos+1 : 0; }
|
Тут in это ifstream, а out - ofstream из <fstream>. Далее идет упражнение, которое бы дешифровывало сообщения (в моем случае, файлы), закодированные таким методом, не зная ключа. В качестве подсказки, ссылка на книгу Дэвида Кана (David Kahn) - "The Codebreakers" издательства Macmillan, 1967 год, Нью-Йорк. Страницы 207-213. Мне на ум приходит только брутфорс, с проверкой на нечитаемые символы в тексте выходного файла. Правда все-равно прийдется просматривать каждый из расшифрованных файлов, в которых не осталось этих символов. И еще один минус - дважды зашифрованный разными ключами файл не расшифруется ни разу, так как выходной файл не пройдет проверки на нечитаемые символы. Может, кто имеет в электронной или бумажной версии вышеуказанную книгу Дэвида Кана? Или у кого-нибудь есть идеи, как можно выполнить такую задачу?
|