Шифр Цезаря. Пошук ключа для зашифрованого файлу.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2005
Тип роботи:
Лабораторна робота
Предмет:
Захист інформації в комп’ютерних системах
Група:
КI

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 2 з курсу „ Захист інформації в комп’ютерних системах ” Тема: Шифр Цезаря. Пошук ключа для зашифрованого файлу. Виконав: ст. гр. КІ-4 Львів – 2005 Мета роботи: Створити програму, яка б шукала ключ до зашифрованого файлу, та розшифровувала його, відомо, що файл зашифровано алгоритмом Цезаря, не використовуючи прямий перебір. Виконання роботи: Для пошуку ключа алгоритмом шифрування Цезаря було використано найпростішу реалізацію методу частотного аналізу. Метод частотного аналізу полягає в аналізі частоти входження символів у відкритому тексті. Отже я шукав символ, що зустрічається у зашифрованому тексті найчастіше, і при виборі ключа вважав, що це пробіл. Варіант 12. Текст програми: #include "stdafx.h" #include "stdlib.h" #include "ctype.h" #include "io.h" #define THE_CHAR ' ' FILE * in, * out; void error(int); int findkey(); // функція пошуку ключа для даного зашифрованого файлу void decrypt(int);// функція дешифрування файлу (відновлення оригінального тексту) int main(int argc, char* argv[]) { unsigned char key=3; if (argc!=3) error(1); if ( ((in = fopen(argv[1],"r"))!= NULL) && ((out = fopen(argv[2],"w"))!= NULL) ){ printf("Program: %s;\n input file: %s;\n output file: %s.\n",argv[0],argv[1],argv[2]); } else error(2); key=findkey(); rewind(in); decrypt(key); fclose(in); fclose(out); printf("\nEncrypted file has been decypted. Key was %d.\n",key); return 0; } void error(int e) { if (e==1) printf("Wrong parameters!\nSYNTAX: 2_decrypt <input file> <output file> \n"); else printf("File I/O error!\n"); exit(1); } /*** Функція пошуку ключа ***/ int findkey() { unsigned char ch=0, pop_char=0; unsigned char key; // ключ алгоритму Цезаря static int char_count_table[256]; int i, max_count; printf("\n>>>\tKey fetchinп started"); while (!feof(in)) { // сканування файлу ch=fgetc(in); char_count_table[ch]++; // рахування повторів символів } max_count=0; for ( i=0 ; i<256 ; i++ ) { if ( max_count<=char_count_table[i] ) { max_count=char_count_table[i]; pop_char=i; } } puts("...SUCCESS!"); printf("max count has \"%c\" (hex%X,dec%d) - %d times\n",pop_char,pop_char,pop_char,max_count); printf("assuming it's \"%c\" (hex%X,dec%d)\n",THE_CHAR,THE_CHAR,THE_CHAR); key=pop_char-THE_CHAR; return key; } /*** Функція дешифрування вхідного файлу за допомогою вказаного ключа k ***/ void decrypt(int k) { int ch; printf("\n>>>\tDecrypting started"); ch=fgetc(in); while (!feof(in)) { ch=ch-k; fputc(ch,out); ch=fgetc(in); } puts("...DONE!"); } Результати роботи програми: Вхідний (зашифрований) файл (фрагмент): %%%%%iАПТКНЖ;rКНЖДЙВ;bНКРЛ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;nI;fАЙП%mАМРАОП;БКН;^КИИАЙПОU;MOKQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;]]i;^КНЛ%j}ОКЗАПАОU;LSMR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mI;\ПЖДЙОКЙ%^|ПАВКНФU;nП|Й|НО;oН|~Ж;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[cКИА;iАПТКНЖ%;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iКСАИ}АН;LTTS%%%;;;;;;;;;;;;;;;;dk;`Й~|ЛОРЗ|ПДЙВ;nА~РНДПФ;k|ФЗК|;C`nkD%%nП|ПРО;КБ;ПГДО;hАИК%%;;;oГДО;К~РИАЙП;ОЛА~ДБДАО;|Й;dЙПАНЙАП;ОП|Й|НО;ПН|~Ж;ЛНКПК~КЗ;БКН;ПГА%;;;dЙПАНЙАП;~КИИРЙДПФG;|Й;НАМРАОПО;ДО~РООДКЙ;|Й;ОРВВАОПДКЙО;БКН%;;;ДИЛНКСАИАЙПОI;;kЗА|ОА;НАБАН;ПК;ПГА;~РННАЙП;АДПДКЙ;КБ;ПГА;=dЙПАНЙАП%;;;jББД~Д|З;kНКПК~КЗ;nП|Й|НО=;Cno_;LD;БКН;ПГА;ОП|Й|НДХ|ПДКЙ;ОП|ПА%;;;|Й;ОП|ПРО;КБ;ПГДО;ЛНКПК~КЗI;;_ДОПНД}РПДКЙ;КБ;ПГДО;ИАИК;ДО;РЙЗДИДПАI%% Вхідний файл – відкритий текст (фрагмент): Network Working Group S. Kent Request for Comments: 2406 BBN Corp Obsoletes: 1827 R. Atkinson Category: Standards Track @Home Network November 1998 IP Encapsulating Security Payload (ESP) Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Висновок: виконуючи цю лабораторну роботу, я навчився використовувати найпростіші методи зламування шифрів на прикладі алгоритму шифрування Цезаря. В результаті отримав читабельний текст.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!