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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.71
Rad-X
0 / 0 / 0
Регистрация: 03.05.2013
Сообщений: 14
#1

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

03.05.2013, 15:07. Просмотров 5741. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2013, 15:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Взлом XOR шифра (C++):

Криптоанализ шифра Цезаря - C++
Помогите пожалуйста, написать програму. Суть программы в том чтобы без ключа разшифровать текст зашифрованый шифром Цезаря.

Расшифровка шифра Виженера - C++
Здравствуйте, помогите пожалуйста разобраться. У меня задания расшифровать шифр Виженера. Ключ <=5 Дальше весь закодированный текст...

Шифрование шифра Виженера - C++
Здравствуйте! При шифровании сообщения на русском языке шифром Виженера у меня возникла ошибка. ind2=abc.find(key); <--- вот в этой...

Реализация шифра Виженера - C++
Написать программу для шифра Виженера на С++

Криптоанализ шифра Виженера - C++
скачал и начал разбираться с прогой по криптоанализу,но сложно // Kaziski.cpp : Defines the entry point for the console application. //...

Реализация задачи шифра замены - C++
Ребята, всем доброго времени суток. Помогите пожалуйста с реализацией данной задачи. Вообще что то все колом в башке встало. С файлами...

20
Nick Alte
Эксперт С++
1641 / 1013 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
05.05.2013, 11:16 #16
Допустим, мы установили, что длина ключа 19 символов. Это по сути значит, что к тексту последовательно применяются 19 разных моноалфавитных шифров. Таким образом, сгруппировав буквы в 19 "кучек", по каждому символу ключа, мы можем подвергнуть каждую группу независимому частотному анализу. Знание того, что применялся именно XOR, только облегчает нашу задачу и уменьшает количество возможных вариантов, а уж если ключ осмысленный, то можно по уже раскрытой части угадать всё слово, как в "Поле чудес".
0
Rad-X
0 / 0 / 0
Регистрация: 03.05.2013
Сообщений: 14
07.05.2013, 20:01  [ТС] #17
Кликните здесь для просмотра всего текста
БглнфсмбцпехКжлдчшфкмяеэзлптнцапгидфлыияеяатдктглъьййирышйкхехыибэянщагзпзйжаъъчощвквюпгштчбцкшйпзехюможебфшбзмжмиеАыожи жХщякухпынюйьиотащздмфчзаябвеацчеямязозыблчтвмщнщиььцхщжбгвттэжоообйщрафившхезуыпуццюмруюфояяъжфлькшыщпмыъйбнисвэуэнлъэм арсбмчхгняаужжхфоерякдыЯсьиллсджаойЪлбаыщлзоадонелягштбьпммчющтнбеаежхыайюфэежсгзгфзсуыжшпъщнгкехвэюшцмиеавхыеокьщйдтрьш днзюхммЧьмфнийръьчуХтиюккюурмлгхываяьптхббапнаввмхщкшшьсаъофэбтшпюдзспъккзяпсалоюдмКБтвкыеФЪпгощюяБшчйггищнрнкйлшЫэьлжуб ЛухшъныгввтшгщумюявДеопщынлряжюПяжннъшЬчъйжэндкауцмрщендвигчвщыяоргъхншзигьвэфщжабпоаоглзхкйтяоэоъщгрювнуквчлоооэрпглгэс фйжпейндтогъщхчпяыцемрзхцчкмофбкюдхцюытьькхвгзшкькшеюсжжДокбчнфаъклхыатеааикыуцмюютащаагьрйиииэлнучрчыкпгдзлналщхфянчгеш хеудъкэагюцпеуымйъеачзницжмдлдвхфзббафхеУдЪвуълашдакчяждщыеюохкцьылдфшвеъсыщыафилгуитткмееасбжкфпггмьчшжяцдучгщщтлгбцдеб мвоуКсщчхЕыитцеынэгкбнсщжхщпялвьцюсжиййагюжбфвфнаафжовкгжжыочгхдбнжттвсгрядкгвящегелкбцефюагзвгдчоулвыжнаоюшзхчоркхразба хмммпищшлшжьлвзнмнэбаенпйдВхофспхшаодфэаритшвщкдатвопбауатжйефййиьррщижоойфкцхсэышоэнфнмсойплюясмнрхюзиохерлвхвефбяытвая оаокзотгбмолцужибщюмфстохмвщожмьбмьъмъьлщжжыоекщнззмкааквлшцщтяиюиюаухфигбжжыфзжриъакщуутмежуйлибыйдбървьщдбщхнщкгг

Это отксоренный сам с собой текст клюом
Кликните здесь для просмотра всего текста

сложениепомодулюдваабракадабрахамлищеа

по идее, в шифротексте каждый 38-й символ должен быть закордирован одним и тем же смещением?
Ведь так? Но это не наблюдается
0
Rad-X
0 / 0 / 0
Регистрация: 03.05.2013
Сообщений: 14
11.05.2013, 20:16  [ТС] #18
Сверху отксоренный текст, снизу оригинал. Шифр цезаря для колонок не работает. Что делать?
0
Миниатюры
Взлом XOR шифра  
Nick Alte
Эксперт С++
1641 / 1013 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
12.05.2013, 10:06 #19
А давайте не будем путать одно с другим. XOR - это XOR, а шифр Цезаря - это сложение. Само понятие "смещения" применимо только для сложения и шифра Цезаря, а тут у нас XOR. Так что надо не смещения выискивать, а подбирать символы ключа так, чтобы после проXORивания соответствующей группы таким символом распределение частот букв было наиболее близким к натуральному.
0
Rad-X
0 / 0 / 0
Регистрация: 03.05.2013
Сообщений: 14
12.05.2013, 20:16  [ТС] #20
Цитата Сообщение от Nick Alte Посмотреть сообщение
А давайте не будем путать одно с другим. XOR - это XOR, а шифр Цезаря - это сложение. Само понятие "смещения" применимо только для сложения и шифра Цезаря, а тут у нас XOR. Так что надо не смещения выискивать, а подбирать символы ключа так, чтобы после проXORивания соответствующей группы таким символом распределение частот букв было наиболее близким к натуральному.
Я получил ключ, но просто брутом ксорил один из столбцов, пока не получу нормальные частоты. Но тогда я получается не применял этот ксор текста самим с собой
0
Befrodo
01.06.2013, 10:40 #21
Rad-X, Наткнулся на Ваше сообщение по поводу XOR шифрования.Не могли бы Вы пояснить, как определить длину ключа для случайного текста.Или например txt файла размером 4кб?
Заранее благодарен.
01.06.2013, 10:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2013, 10:40
Привет! Вот еще темы с ответами:

Шифратор/Дешифратор шифра цезаря - C++
Не так уж и давно мне было необходимо создать шифратор в шифр цезаря(сори за тавтологию). Однако мне не удалось найти НИ ОДИН рабочий...

Отладить код шифра Цезаря - C++
Здравствия всем, не все происходит так как бы хотелось. #include "stdafx.h" #include <iostream> using namespace std; bool...

Программа использования простого столбцевого шифра - C++
программа использования простого столбцевого шифра. не могу исправить ошибку в строкеRead_Column(Nmin, QL, QC, AR);пишет ошибкуВозможно эту...

Частотный анализ для шифра Цезаря - C++
Добрый день! Нужно было написать программу,которая кодирует шифр Цезаря. Это есть: #include <iostream> using namespace std; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

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