Форум программистов, компьютерный форум, киберфорум
Наши страницы

Взлом XOR шифра - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шаблон функции сравнения для qsort() http://www.cyberforum.ru/cpp-beginners/thread854889.html
Хочу отсортировать массив из int и из double с помощью qsort(). Для этого необходимо определить функцию сравнения элементов. Думал попробовать сделать шаблон такой функции. template <class T> int...
C++ Не работает признак окончания ввода(признак-0) Признак окончания ввода 0; подскажите люди добрые что не так?) #include <iostream> #include<stdio.h> using namespace std; int main(){ setlocale(LC_ALL, "Russian"); int const n=1000; int... http://www.cyberforum.ru/cpp-beginners/thread854873.html
Добавить числа из файла C++
Суть задания : создать файл, записать туда 10 рандомных чисел, закрыть файл, открыть файл, взять оттуда числа и посчитать их сумму. Проблема собсно в том, что считаю я аски кода этих чисел, а не сами...
CAsyncSocket C++
Доброго времени суток. При написании программы возникла проблема с CAsyncSocket. Нужно было реализовать передачу сообщений между диалоговым приложением и консолью (консоль - сервер), через...
C++ Задача по численным методам http://www.cyberforum.ru/cpp-beginners/thread854832.html
помогите решить задачу
C++ Передача операнда внутри переопределенной операции Здравствуйте. Пытаюсь разобраться с перегрузкой операций для классов, и вот в чем проблема: Есть класс longNumber, в котором хранится(внезапно) длинное число в виде массива цифр а также знак числа.... подробнее

Показать сообщение отдельно
Rad-X
0 / 0 / 0
Регистрация: 03.05.2013
Сообщений: 14

Взлом XOR шифра - C++

03.05.2013, 15:07. Просмотров 5742. Ответов 20
Метки (Все метки)

Здравствуйте, пишу программу для взлома XOR шифра.
Прочитал по этому поводу в "Прикладной криптографии" Брюса Шнайера.

Там описан следующий алгоритм:

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

1.Определим длину ключа с помощью процедуры,известной как ПОДСЧЕТ СОВПАДЕНИЙ.
Применим операцию XOR к шифротексту,используя в качестве ключа сам шифротекст с различными смещениями,и подсчитаем совпадающие байты. Если величина смещения кратна длине ключа,то совпадет свыше 6 процентов байтов. Если нет,то будут совпадать меньше чем 0.4 процента( считая,что обычный ASCII текст кодируется случайным ключом,для других типов открытых текстов числа будут другими). Это называется показателем совпадений. Минимальное смещение от одного значения,кратного длине ключа,к другому и есть длина ключа.

2. Сместим шифротекст на эту длину и проведем операцию XOR для смещенного и оригинального шифротекстов.Результатом операции будет удаление ключа и получение открытого текста,подвергнутого операции XOR с самим собой,смещенным на длину ключа. Так как в английском языке на один байт приходится 1.3 бита действительной информации,существующая значительная избыточность позволяет определить способ шифрования."

Немного не понимаю, что мы считаем совпадающими байтами? Совпадения между строкой шифротекста и полученной строкой? Или только в полученной строке?

Нашел на википедии статью http://ru.wikipedia.org/wiki/%D0%98%...BD%D0%B8%D0%B9

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

Может дело в том, что шифрую только 32 буквы русского алфавита? Но ведь при смещении кратном длине ключа всплески должны быть, но их нету.

Что делать, как быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru