Rad-X
0 / 0 / 0
Регистрация: 03.05.2013
Сообщений: 14
|
|
#1 | |
Взлом XOR шифра - C++03.05.2013, 15:07. Просмотров 6068. Ответов 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++):
20
Криптоанализ шифра Цезаря - C++ Расшифровка шифра Виженера - C++ Шифрование шифра Виженера - C++ Реализация шифра Виженера - C++ Криптоанализ шифра Виженера - C++ Реализация задачи шифра замены - C++ |
Nick Alte
![]() |
|
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
|
Nick Alte
![]() |
|
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 |
Я получил ключ, но просто брутом ксорил один из столбцов, пока не получу нормальные частоты. Но тогда я получается не применял этот ксор текста самим с собой
0
|
Befrodo
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 1
|
|
01.06.2013, 10:40 | #21 |
Rad-X, Наткнулся на Ваше сообщение по поводу XOR шифрования.Не могли бы Вы пояснить, как определить длину ключа для случайного текста.Или например txt файла размером 4кб?
Заранее благодарен.
0
|
01.06.2013, 10:40 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
01.06.2013, 10:40 |
Привет! Вот еще темы с ответами:
21
Отладить код шифра Цезаря - C++ Программа использования простого столбцевого шифра - C++ Частотный анализ для шифра Цезаря - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |