Информатика, программирование: Шифрувальник та дешифрувальник, Курсовая работа

Міністерство вищої освіти України

Запорізький Національний Технічний Університет

ПОЯСНЮВАЛЬНА ЗАПИСКА ДО КУРСОВОГО

ПРОЄКТУ З ДИСЦИПЛІНИ “ОП та АМ”

Шифрувальник та дешифрувальник

2003


РЕФЕРАТ

Об’єкт дослідження – вивчення середи програмування TURBO PASCAL 7.0 на прикладі створення програми.

Мета роботи – написати програму, за допомогою якої можливо було б шифрувати інформацію та розпізнавати шифровану.

Програма працює з машинописом англійського тексту, який відповідає стандартам ASCII. Кирилиця програмою розпізнається не чітко, завдяки розходженню її кодування зі стандартами ASCII.

Програма може здійснювати шифровку та розшифровку інформації,яка знаходиться у файлах з розширенням .doc , .txt .

Принцип дії – це зміна коду символу за мировим стандартом завдяки ключу, який має знати лише користувач. Цей числовий ключ і буде зміщенням коду символів. Він не повинен бути кратним 256, тобто він не повинен приймати значення 0, 256, 512 та інші.

Простий і наглядний інтерфейс програми лише полегшує її використання.


ЗМІСТ

Реферат

Варіанти кодування знакогенераторів ПК

Робота з програмою, її інтерфейс

Основні процедури і їх функції

Текст програми

Рисунок 1.1 – Меню програми

Рисунок 1.2 – Файл, який шифрується програмою

Рисунок 1.3 – Шифрування інформації програмою

Рисунок 1.4 – Файл, який містить зашифровану інформацію

Рисунок 1.5 – Розшифровка інформації програмою

Рисунок 1.6 – Файл, який містить розшифровану інформації


Варіанти кодування знакогенераторів ПК

Стандартний знакогенератор ПК ІВМ складається з двох частин: символи з кодами від 0 до 127, утворюючі першу половину символів знакогенератора, будуються за стандартом ASCII і однакові на всіх ІВМ – сумісних ПК. Друга половина символів (коди 128...255) можуть відрізнятись на ПК різного типу. У стандартному знакогенераторі фірми ІВМ символи псевдографіки займають три суміжні області (коди 176...223). Область з кодами від 128 до 175 та від 224 до 239 використовується для розміщення деяких символів національного алфавіту різних європейських мов, а остання (коди 240...255) – для розміщення спеціальних знаків. З розрахунку цього рас положення символів розроблюється подальша множина програм зарубіжного походження.

Стандартний вітчизняний знакогенератор будується на рекомендаціях Міжнародного Консультаційного Комітету По Телеграфії і Телефонії (МККТТ). Розміщення символів у другій половині таблиці цього знакогенератору різко відрізняється від прийнятої фірмою ІВМ, що затрудняє користування зарубіжного програмного забезпечення на вітчизняних ПК. У зв’язку з цим, стандартний (ГОСТовий ) варіант кодування часто замінюється альтернативним, головна риса якого – розміщення символів псевдографіки ні тих же місцях, що й в знакогенераторі ІВМ. Недолік такого знакогенератора міститься у тому, що символи Кирилиці утворюють розривний масив. Саме на цей варіант розраховані всі програми вітчизняного виробництва. Він став фактичним стандартом для зарубіжних фірм, які виготовляють ПК для експорту до нашої країни.


Робота з програмою, її інтерфейс

Для початку роботи з програмою необхідно запустити її, клацнувши два рази лівою кнопкою миші по ярлику KYRSOVIK.BAT . Після цього на екрані монітора з’явиться меню програми (Рисунок 1.1 – Меню програми, с.).

Клавішами “догори” і “донизу” необхідно вибрати дію, яку буде виконувати програма: “Шифровка Информации”, “Расшифровка Информации” або “Выход”.

При виборі “Шифровка Информации” з’явиться запит на параметри, які повинні бути введені (Рисунок 1.3 – Шифрування інформації програмою, с.): файл, інформацію якого буде шифрувати програма (Рисунок 1.2 – Файл, який шифрується програмою, с.), файл, який буде містити шифровану інформацію та код шифрування. Шифрована інформація буде міститись в текстовому файлі (Рисунок 1.4 – Файл, який містить зашифровану інформацію). Після введення цих даних з’явиться заново меню.

При виборі “Расшифровка Информации” з’явиться вікно

(Рисунок 1.5 – Розшифровка інформації програмою, с. ), у якому повинні бути введені файл, інформацію якого потрібно розшифрувати , файл, в який буде поміщена розшифрована інформація (Рисунок 1.6 – Файл, який містить розшифровану інформації) та відповідний код шифрування.

При виборі “Выход” програма завершує свою роботу.


Основні процедури і їх функції

Алгоритм програми складається з роботи двох процедур: процедури шифрування (Zashifr) і дешифрування (Racshifr).

В процедурі Zashifr (сторінки 7, 13) вказується путь розташування (name_otkyda) файла (f), інформацію якого необхідно зашифрувати, та новій файл (f_new) і путь до нього (name_kyda), в який необхідно помістити зашифрований текст .

В строкову змінну (s) заноситься інформація файла, який шифрується, а потім ASCII код кожного символу цієї строкової змінної зміщується в сторону зростання на величину ключа коду (sdvig). Потім в іншу строкову змінну (ss) заносяться всі кодовані символи і ця змінна записується до файлу, який має містити шифрований текст.

В процедурі Racshifr (сторінки 8, 13) навпаки, код строкової змінної (s), в яку було занесено шифровану інформацію, зменшується на величину ключа коду (sdvig). І також інша строкова змінна (ss), яка вже буде містити розшифровану інформацію, поміститься вже у новий файл, який буде містити розкодовану інформацію.

Складання інтерфейсу будується на використанні стандартних модулів CRT і GRAPH середовища компілятора TURBO PASCAL 7.0 .

Стандартне перебування ПК після включення, а також у момент запуску відкомпільованої програми відповідає роботі екрана у текстовому режимі, тому програма ініціалізує графічний режим роботи дисплею адаптера. Після роботи програми ПК вертається в текстовий режим.


Текст програми

Uses CRT,GRAPH;

label a;

var gd,gm,k:integer;

 ch:Char;

 bool:boolean;

{--------------------------------------}

Procedure Zashifr;

var name_otkyda,name_kyda,s,st,ss:string;

 f,f_new:text;

 sdvig,i,j:integer;

begin

 writeln(' Введите путь к текстовому файлу,');

 writeln(' содержимое которого необходимо зашифровать:');

 readln(name_otkyda);

 assign(f,name_otkyda);

 reset(f);

 writeln(' Введите путь к текстовому файлу,');

 writeln(' содержимое которого будет шифровкой предыдущего:');

 readln(name_kyda);

 assign(f_new,name_kyda);

 rewrite(f_new);

 writeln(' Введите сдвиг кода символа:');

 readln(sdvig);

 writeln(' Результат шифровки данных:');

 while not Eof(f) do

 begin readln(f,s);

 ss:='';

 for i:=1 to length(s) do

 begin

 for j:=0 to 255 do

 begin

 if j=ord(s[i]) then

 begin

 st:=CHR(sdvig+j);

 ss:=ss+st;

 write(st);

 end;

 end;

 end;

 writeln;

 writeln(f_new,ss);

 ss:='';

 end;

 close(f);

 close(f_new);

end;

{--------------------------------------}

Procedure Racshifr;

var name_otkyda,name_kyda,s,st,ss:string;

 f,f_new:text;

 sdvig,i,j:integer;

begin

 writeln(' Введите путь к текстовому файлу,');

 writeln(' содержимое которого необходимо расшифровать:');

 readln(name_otkyda);

 assign(f,name_otkyda);

 reset(f);

 writeln(' Введите путь к текстовому файлу,');

 writeln(' содержимое которого будет расшифровкой предыдущего:');

 readln(name_kyda);

 assign(f_new,name_kyda);

 rewrite(f_new);

 writeln(' Введите сдвиг кода символа:');

 readln(sdvig);

 writeln(' Результат расшифровки данных:');

 while not Eof(f) do

 begin

 readln(f,s);

 ss:='';

 for i:=1 to length(s) do

 begin

 for j:=0 to 255 do

 begin

 if j=ord(s[i]) then

 begin

 st:=CHR(-sdvig+j);

 ss:=ss+st;

 write(st);

 end;

 end;

 end;

 writeln;

 writeln(f_new,ss);

 ss:='';

 end;

 close(f);

 close(f_new);

end;

{--------------------------------------}

begin

 clrscr;

 bool:=false;

 gd:=detect;

 a: InitGraph(gd,gm,'');

 clearDevice;

 SetBkColor(9);

 Rectangle(200,100,420,150);

 SetFillStyle(1,6);

 FloodFill(220,120,White);

 OutTextXY(235,125,'Шифровка Информации');

 Rectangle(200,200,420,250);

 SetFillStyle(1,8);

 FloodFill(220,220,White);

 OutTextXY(225,225,'Расшифровка Информации');

 Rectangle(200,300,420,350);

 SetFillStyle(1,8);

 FloodFill(220,320,White);

 OutTextXY(280,325,' Выход');

 k:=3;

 repeat ch:=readkey;

 case ch of

 #72:begin

 k:=k+1;

 if k=4 then k:=1;

 case k of

 3:begin

 Rectangle(200,100,420,150);

 SetFillStyle(1,6);

 FloodFill(220,120,White);

 OutTextXY(235,125,'Шифровка Информации');

 Rectangle(200,200,420,250);

 SetFillStyle(1,8);

 FloodFill(220,220,White);

 OutTextXY(225,225,'Расшифровка Информации');

 Rectangle(200,300,420,350);

 SetFillStyle(1,8);

 FloodFill(220,320,White);

 OutTextXY(280,325,' Выход');

 end;

 2:begin

 Rectangle(200,100,420,150);

 SetFillStyle(1,8);

 FloodFill(220,120,White);

 OutTextXY(235,125,'Шифровка Информации');

 Rectangle(200,200,420,250);

 SetFillStyle(1,6);

 FloodFill(220,220,White);

 OutTextXY(225,225,'Расшифровка Информации');

 SetFillStyle(1,8);

 FloodFill(220,320,White);

 OutTextXY(280,325,' Выход');

 end;

 1:begin

 Rectangle(200,100,420,150);

 SetFillStyle(1,8);

 FloodFill(220,120,White);

 OutTextXY(235,125,'Шифровка Информации');

 Rectangle(200,200,420,250);

 SetFillStyle(1,8);

 FloodFill(220,220,White);

 OutTextXY(225,225,'Расшифровка Информации');

 SetFillStyle(1,6);

 FloodFill(220,320,White);

 OutTextXY(280,325,' Выход');

 end;

 end;

 end;

 #80:begin

 k:=k-1;

 if k=0 then k:=3;

 case k of

 3:begin

 Rectangle(200,100,420,150);

 SetFillStyle(1,6);

 FloodFill(220,120,White);

 OutTextXY(235,125,'Шифровка Информации');

 Rectangle(200,200,420,250);

 SetFillStyle(1,8);

 FloodFill(220,220,White);

 OutTextXY(225,225,'Расшифровка Информации');

 Rectangle(200,300,420,350);

 SetFillStyle(1,8);

 FloodFill(220,320,White);

 OutTextXY(280,325,' Выход');

 end;

 2:begin

 Rectangle(200,100,420,150);

 SetFillStyle(1,8);

 FloodFill(220,120,White);

 OutTextXY(235,125,'Шифровка Информации');

 Rectangle(200,200,420,250);

 SetFillStyle(1,6);

 FloodFill(220,220,White);

 OutTextXY(225,225,'Расшифровка Информации');

 SetFillStyle(1,8);

 FloodFill(220,320,White);

 OutTextXY(280,325,' Выход');

 end;

 1:begin

 Rectangle(200,100,420,150);

 SetFillStyle(1,8);

 FloodFill(220,120,White);

 OutTextXY(235,125,'Шифровка Информации');

 Rectangle(200,200,420,250);

 SetFillStyle(1,8);

 FloodFill(220,220,White);

 OutTextXY(225,225,'Расшифровка Информации');

 SetFillStyle(1,6);

 FloodFill(220,320,White);

 OutTextXY(280,325,' Выход');

 end;

 end;

 end;

 #13:begin

 case k of

 3:begin

 ClearDevice;

 CloseGraph;

 Zashifr;

 readln;

 goto a;

 end;

 2:begin

 ClearDevice;

 CloseGraph;

 RacShifr;

 readln;

 goto a;

 end;

 1:begin

 ClearDevice;

 CloseGraph;

 bool:=true;

 end;

 end;

 end;

 end;

 until bool;

end.


ІЛЮСТРАЦІЇ

 

Рисунок 1.1 – Меню програми


 

 Рисунок 1.2 – Файл, який шифрується програмою


 

Рисунок 1.3 – Шифрування інформації програмою


  

Рисунок 1.4 – Файл, який містить зашифровану інформацію


Рисунок 1.5 – Розшифровка інформації програмою


 

Рисунок 1.6 – Файл, який містить розшифровану інформації


Еще из раздела Информатика, программирование:


 Это интересно
 Реклама
 Поиск рефератов
 
 Афоризм
Мужчина заплатит два рубля за рублевую вещь, которая ему нужна. Женщина заплатит один рубль за двухрублевую вещь, которая ее не нужна.
 Гороскоп
Гороскопы
 Счётчики
bigmir)net TOP 100