Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
30
Добавлен:
17.06.2021
Размер:
29.34 Кб
Скачать

Федеральное государственное бюджетное образовательное учреждение

высшего образования «Омский государственный технический университет»

Кафедра «Комплексная защита информации»

Отчёт

по практическим занятиям

по дисциплине: «Криптографические методы

и криптопротоколы»

Задание 2 – Шифр Виженера

Выполнил студент гр. ИВТм-192

__________Козлитин Ю.В.

"____"___________2019 г.

Принял

Проф., д-р физ.-мат. наук Широков И.В.

______________________

"____"___________2019 г.

Омск 2019

Шифр Виженера

Задание: Расшифровать данный текст, используя шифр Виженера.

Вариант 9

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

Выполнение задания:

Для дешифрования текста необходимо применить следующий алгоритм:

  1. Рассчитать индекс совпадений для зашифрованного текста.

  2. Применить автокорреляционный метод.

  3. Исходя из расчетов определить длину ключа

  4. Разбить текст на соответствующие моноалфавитные шифры, число которых зависит от длины ключа.

  5. Провести частотных анализ полученных текстов и определить сдвиги позиций шифротекста.

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

ИС=∑0Lf*(f-1)/n*(n-1)

Где f – количество текущей буквы в тексте, L – мощность алфавита, а n – длина текста.

Исходя из результатов расчета, можно сделать вывод, что длина ключа равна пяти символам, т. к. при длине ключа 5 индексы численно близко к 0.0453. Далее зашифрованный текст необходимо разбить на 5 групп с интервалом символов равном 5.

  1. После разделения текста по позициям символа ключа, получаются следующие тексты:

  2. 1) хбижешндьтьбхстхшцшндбтштнебщлбашнют ттчхватбтххчеаьетхдештббгюаашаутбрятбхтвеюдубжятибвеюббьдбяьтгбьбшьшшуьхшоутцжгьабтгдббнддедашхоягюбеушудвтддбдбгсехбтгьтцчабтддачтгшятцшьтувяутюхюттчабашбеашхшаатецбхджцдтгщаттбшушуьэбб бцюбтчотщядбтгсхсьдюерчякгьгвдтьняабьнтатстбаеуааш

  3. 2) обоуссобгаоыпоэпоюооэьяэяоюоччтюуьюсочтпф фхэщойпююфюяыкюьзсшффюпэпэбяопьофщычющыловэюаюк фрфюанаазоэо нтщ абоьощюувыптщюфусфыфэсч поычю пя эщюсаоисофьюеасчабюфчыьфокфяройжфьдтэюоцб йвдффюычсффюоюбкпювыозноюысчпэщсьацбсшоыбоьычшчоьяфюзсбюоао ныкцнвбвшюючпчауюоасбюсцчычпщффэ

  4. 3) юяурратяавшлвврхцюытяпаоя о тхьпхпюпшюяапшюрюяшюьпипааоппошрп ппаш юрш юя бпязэргвтзхфвбпхпйпьвьляхююбцпяалря яшрюлушыяяэпшрпяыкхохьтхзщэыапжшбпш лябвхарьпцлрпаозхщяпюхгоиваэпхшбчпкяеаяуюхяхрпапячпуп пршхпмпрпцаяяяплкббб пяэпшхбп ярппшррбшвбрпнппвеябпь ьюппрпя рабпшегхыпувх

  5. 4) ф ю дюьоюпацкпцьпэюосччыаюэ попсэцпбыюаащьч йудвююфщююыссогэячюювфчйшаючт буьфвэоюопюччыабафяопоьсэфююппофоы чоьщчопоюобоящэяь фуоучотфофочгвшю чюмффпдтопяоьщахочджжьоб опю фч чыпэабоюбюфохохчфтэкуччыааььчбяояфтьуыцоснбщющсфпшощбчо р гэщао юмцжадочоащк отоабжэйфвбаоожьовюот

  6. 5) ьлвврацйуэа вьллблх яжющэвя уввуясю щюдгрцофж рчргя цп рбьбяцвхтчрвжямвыэщщщсврхаювцтюрсця я вуа цяуфхярвгар вяп тхршюу убгя рцрцасвс веряюбшрэ рюрфьб аэса суырсц уцфвэррбшюрсьср йьпрчацяяявхрюцржс яцдр щср ддьхясрбщвблжявусрвущлсб рщсщтгсщ враь р дэг ргрггхщувацрьррх

  7. Далее определяем наиболее частую букву в каждом из текстов, именно из этих букв и состоит ключевое слово «ТОПОР»

  8. Далее, после определения ключевого слова расшифровать текст можно по следующему алгоритму:

  9. pi = ( ci + N - ki ) mod N

Где pi – символ исходного сообщения ci – символ закодированного сообщения, N –мощность алфавита (количество символов в алфавите), ki – символ ключа

После применения метода “Decode” получаем исходный текст:

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

Приложение

private void button1_Click(object sender, EventArgs e)

{

if (textBox3.Text == "")

{

MessageBox.Show("Enter k, please", "Error");

return;

}

button1.Enabled = false;

textBox3.Enabled = false;

textBox4.Text = "";

int k = Convert.ToInt32(textBox3.Text);

char[] str = textBox1.Text.ToArray();

for(int i = 0; i<str.Length; i++)

{

if (i % k == 0)

{

textBox2.Text +=Convert.ToString(str[i]);

} }

int L = textBox2.Text.Length;

char[] str2 = textBox2.Text.ToArray();

double[] count = new double[cmp.Length];

double[] indexes = new double[cmp.Length];

double result;

for (int j = 0; j < cmp.Length; j++)

{ count[j] = 0;

foreach (char c in str2)

{ if (c == cmp[j])

{ count[j]++; }}

indexes[j] = (count[j] * (count[j] - 1)) / (L * (L - 1));

if (cmp[j] == ' ')

{

textBox4.Text = "пробел" + "-" + count[j] + " "; ;

textBox5.Text = "пробел" + "-" + indexes[j] + " "; }

else

{ textBox4.Text += cmp[j] + "-" + count[j] + " ";

textBox5.Text += cmp[j] + "-" + indexes[j] + " ";}}

result = indexes.Sum();

textBox6.Text = Convert.ToString(Math.Round(result, 5));

textBox6.Visible = true; }

private void button2_Click(object sender, EventArgs e)

{ if (textBox3.Text == "")

{ MessageBox.Show("Enter k, please", "Error");

return; }

button2.Enabled = false;

char[] s1 = textBox1.Text.ToArray();

int K = Convert.ToInt32(textBox3.Text);

textBox7.Text = textBox1.Text.Remove(0, K);

string temp = "";

for (int i = 0; i < K; i++)

{temp += s1[i]; if (i == K - 1)

{ textBox7.Text += temp;

} }

char[] s2 = textBox7.Text.ToArray();

double coin = 0;

for (int i = 0; i < s1.Length; i++)

{ if (s1[i] == s2[i])

{ coin++; } }

double N = coin / s1.Length;

textBox8.Text = Convert.ToString(coin) + "-совпадений, доля совпадений: " + Convert.ToString(Math.Round(N, 5));

}