Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОИБ Lab8.doc
Скачиваний:
2
Добавлен:
24.09.2019
Размер:
107.52 Кб
Скачать

Ключ шифрования

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

Ж Г А Й К Л З Н О П М С Т У Ф Ц Д Р И Ч Щ Ы Ш Б Ъ В - Ю Я Х Е Ь

3.2. Ответы на контрольные вопросы

1.) Шифр моноалфавитной подстановки - это один из самых древних шифров

на Земле. Частным случаем этого шифра для шифровки секретных сообщений

пользовался еще Гай Юлий Цезарь.

Прежде всего, выбирается нормативный алфавит, т.е. набор символов,

которые будут использоваться при составлении сообщений, требующих за-

шифровки. Затем выбирается алфавит шифрования и устанавливается взаимно однозначное соответствие между символами нормативного алфавита и символами алфавита шифрования.

2.) Основным недостатком данного метода является то, что подстановки, выполняемые в соответствие с данными методами, не маскируют частоты появления различных букв закрытого текста. Это позволяет легко атаковать данные методы шифрования путем анализа частотности символов закрытого текста.

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

4.) Для упрощения частотного анализа возможна, например, поддержка программой внешнего словаря слов, или наиболее распространенных окончаний слов, предлогов и союзов.

5.) Если произвести все замены в соответствии с частотами появления букв, то правильно дешифровать криптограмму не удастся, т.к. во-первых, частоты букв могут быть одинаковыми (тогда без помощи человека или словаря, программе просто не обойтись), во-вторых некоторых букв в криптограмме может просто не быть и тогда все частоты собьются.

4. Выводы

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

В такой подстановке буква (или символ) в исходном тексте всегда изменяется на одну и ту же самую букву (или символ) в зашифрованном тексте независимо от его позиции в тексте. Например, если алгоритм определяет, что буква A в исходном тексте меняется на букву D, то при этом каждая буква A изменяется на букву D. Другими словами, буквы в исходном тексте и зашифрованном тексте находятся в отношении один к одному.

Приложение

Листинг разработанных программ

#include <locale>

#include <stdio.h>

#include <conio.h>

int main()

{

int j,i,k;

unsigned char c[31];

float ch[31];

float x;

int y=0,b;

setlocale(LC_ALL,"Russian");

FILE *fp;

fp=fopen("lab_var_7.txt", "r");

for(i=0;i<32;i++)

{ c[i]=0;

}

while((b=getc(fp))!=EOF)

{ y++;

if(b==192) c[0]++;

if(b==193) c[1]++;

if(b==194) c[2]++;

if(b==195) c[3]++;

if(b==196) c[4]++;

if(b==197) c[5]++;

if(b==198) c[6]++;

if(b==199) c[7]++;

if(b==200) c[8]++;

if(b==201) c[9]++;

if(b==202) c[10]++;

if(b==203) c[11]++;

if(b==204) c[12]++;

if(b==205) c[13]++;

if(b==206) c[14]++;

if(b==207) c[15]++;

if(b==208) c[16]++;

if(b==209) c[17]++;

if(b==210) c[18]++;

if(b==211) c[19]++;

if(b==212) c[20]++;

if(b==213) c[21]++;

if(b==214) c[22]++;

if(b==215) c[23]++;

if(b==216) c[24]++;

if(b==217) c[25]++;

if(b==218) c[26]++;

if(b==219) c[27]++;

if(b==220) c[28]++;

if(b==221) c[29]++;

if(b==222) c[30]++;

if(b==223) c[31]++;

}

printf("Amount letters in the cryptogram = %d\n",y);

for(j=0,k=192;j<32;j++,k++)

{ ch[j]=((float)c[j]/(float)y);

printf("%c = %f\n",k, ch[j]);

}

getch();

}

8

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]