Шифрувальник та дешифрувальник
Шифрувальник та дешифрувальник
Міністерство вищої освіти України Запорізький Національний Технічний Університет ПОЯСНЮВАЛЬНА ЗАПИСКА ДО КУРСОВОГО ПРОЄКТУ З ДИСЦИПЛІНИ “ОП та АМ” Шифрувальник та дешифрувальник 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 - Файл, який містить розшифровану інформації
|