
|
|
Главная \ Методичні вказівки \ Прикладна математика
Прикладна математика« Назад
Прикладна математика 25.07.2015 07:44
МЕТА I ЗАВДАННЯ КУРСОВОЇ РОБОТИ Згідно з навчальним планом для студентів спеціальності “Прикладна математика” факультету прикладної математики і комп’ютерно-інтегрованих систем УДУВГП передбачено виконання курсової роботи з дисциплши “Програмування”. Виконання цієї роботи є завершальним етапом вивчення дисципліни ”Програмування” i має своєю головною метою:
Кожна курсова робота є проблемно-орієнтованою, а тому містить певну наукову новизну. Виконання роботи сприяє залученню студентів до сучасних проблем програмування і є підгрунтям для майбутніх дипломних робіт. Курсова робота повинна містити
В прoцeci виконання курсової роботи студент повинен узгоджувати з керівником роботи вci відхилення від поставленого завдання, може консуль-туватися по незрозумілих та важких питаннях на консультаціях i заняттях. Виконання роботи розбивається на етапи. При цьому своєчасність i якість виконання студентом кожного етапу фіксується в журналі викладача, а надалі враховується при захисті курсової роботи та її оцінюванні.
1. Тематика курсових робіт 1.1. Вибір теми курсової роботи Тема кожної курсової роботи визначається керівником роботи з урахуванням побажань студента, його інтересів та теми майбутньої дипломної роботи. Тематика курсовик робіт розробляється i затверджується на кафедрі прикладної математики. Всі теми відповідають проблемно-орієнтованим задачам, а тому вимагають від студента творчого підходу до їх розв’язання.
1.2. Приклади тем курсових робіт
2. Вимоги до курсової роботи 2.1. Оформлення курсової роботи Курсова робота повинна містити наступне: 1. Титульний лист (див. приклад курсової роботи). 2. 3міст (з вказанням сторінок). 3. Вступ (короткий виклад важливості розв'язуваного класу задач та доцільність її реалізації на ПК, опис предметної області). 4. Змістовна постановка задачі (приведения загального вигляду вхідних документов та вихідних форм, аналіз поставленої задачі, опис інтерфейсу). 5. Алгоритм розв'язання задачі (словесний або у вигляді блок-схеми). 6. Текст програми (написаний від руки або надрукований). 7. Зображення та описання всіх форм, які є в проекті. 8. Тестовий приклад (з наведеною повною вхідною інформаціею, яка дозволяє перевірити всі режими роботи програми, всіма вихідними формами) з аналізом отриманих результатів. 9.Інструкція користувачу, в якій міститься пояснення щодо правил користу- вання програмою. 10. Висновки. 11. Список використаної літератури. Курсова робота оформляється на листах формату А4, що зверху нумеруються i зшиваються з лівої сторони. Ліве поле повинне бути від 25 до 30 мм, праве - не менше 10 мм; верхнє – 20 мм; нижнє – 20 мм. Текст повинен відповідати змісту. Bсі пункти змісту викладаються чітко i коротко. 2.2. Вимоги до розробки програми Програма для реалізації курсової роботи розробляється на мовах програмуванняObject Pascal або C++ з використанням систем розробки програм Delphi, C++Builder або Visual C++. При написанні програми потрібно дотримуватися наступних вимог: Початкові дані та, можливо, результати обчислень зберігати у типованих файлах. На носії інформації (Гнучкому Магнітному Диску) обов'язково повинен знаходитися текст програмного проекту та текст звіту. Програма повинна містити зручний для користування інтерфейс. Тестування програми провести на прикладі, що дозволяє перевірити вci режими роботи програми.
З. Захист курсової роботи Оформлена курсова робота подається студентом разом з текстом програми на дискеті до захисту. Захист роботи проходить у формі співбесіди. Під час захисту потрібно коротко розповісти про зміст задачі, основні етапи її розв'язання, аргументувати вибір того чи іншого методу розв’язання задачі, пояснити як складались алгоритми i відповідна їх програмна реалізація. На поставлені запитання по виконаній роботі студент повинен дати вичерпні відповіді. Мета опитування полягає у встановленні глибини засвоєння студентом вдповідного матеріалу з курсової роботи, ступеня самостійності її виконаня. При оцінюванні роботи враховується якість її виконання i оформлення, своєчасність виконання етапів роботи, результати співбесіди.
4. Приклад типової курсової роботи
4.1. Основні етапи виконання курсової роботи
Виконання курсової роботи складається з наступних етапів:
4.2. Приклад курсової роботи
Міністерство освіти і науки України Український державний університет водного господарства та природокористування Кафедра прикладної математики
Курсова роботана тему: “Алгоритми шифрування та дешифрування текстової інформації”
Виконав: студент групи ПМ-23 ФПМіКІС Шепетько В.В.
Науковий керівник: д.т.н., професор Власюк А.П.
Рівне - 2002
Зміст
Вступ...........................................................................................................……3 1. Шифрування - метод захисту інформації................................................... 3 2. Класифікація алгоритмів шифрування..........................................……….5 2.1. Класифікація алгоритмів……………………………………………..5 2.1. Симетричні потокові алгоритми шифрування............................…...6 2.3. Симетричні блокові алгоритми шифрування……………………….7 2.4. Асиметричні алгоритми шифрування..............................................…8 3. Реалізація алгоритмів шифрування..............................................………..8 4. Текст програми........................................................................................….9 5. Інструкція користувача...........................................................................….16 6. Тестовий приклад………………………………………………………….17 Висновки...........................................................................................…………20 Література...………………………….........................................................….20
3 ВступМинуле і теперішнє століття є століттям інформатики та інформатизації. Нові технології дають можливість передавати і зберігати все більші обсяги інформації. Це благо має і зворотний бік: інформація стає все більш уразливою. Тому все більше значення набуває проблема захисту інформації від несанкціонованого доступу (НСД) при передачі і збереженні. Сутність цієї проблеми -- постійна боротьба фахівців із захисту інформації зі своїми "опонентами". Проблема захисту інформації шляхом її шифрування, що виключає її считування сторонніми особами, хвилювала людський розум з давніх часів. Із широким поширенням писемності криптографія стала формуватися як самостійна наука. Перші криптосистеми зустрічаються вже на початку нашої ери. Так, Цезар у своїй переписці використовував систематичний шифр, що був названий його ім'ям. Бурхливий розвиток криптографічні системи одержали в роки першої та другої світових воєн. Починаючи з післявоєнного часу і по нинішній день поява обчислювальних засобів прискорила розробку та удосконалювання криптографічних методів. Чому проблема використання криптографічних методів в інформаційних системах (ІС) стала на даний момент особливо актуальною? З одного боку, розширилося використання комп'ютерних мереж, зокрема глобальної мережі Інтернет, по який передаються великі обсяги інформації державного, військового, комерційного і приватного характеру, що не допускає можливість доступу до неї сторонніх осіб. З іншого боку, поява нових потужних комп'ютерів, технологій мережевих і нейронних обчислень уможливила дискредитацію криптографічних систем, що до недавнього часу вважалася не можливою.
1. Шифрування - метод захисту інформаціїПроблемою захисту інформації шляхом її перетворення займається криптологія (kryptos – таємний, logos – наука). Криптологія розділяється на два напрямки: криптографію і криптоаналіз. Криптографія займається пошуком і дослідженням математичних методів перетворення інформації. Сфера інтересів криптоаналізу – дослідження можливості розшифровування інформації без знання ключів. В курсовій роботі основна увага приділена криптографічним методам. Сучасна криптографія містить у собі чотири великих розділи:
Основні напрямки використання криптографічних методів: передача 4 конфіденційної інформації за допомогою каналів зв'язку (наприклад, електронної пошти), встановлення істиності переданих повідомлень, збереження інформації на носіях у зашифрованому вигляді. Криптографія дає можливість перетворити інформацію таким чином, що її прочитання (відновлення) можливе тільки при знанні ключа. Як інформацію, що підлягає шифруванню і дешифруванню, будемо розглядати тексти, побудовані на деякому алфавіті. Під цими термінами розуміється наступне: Алфавіт– послідовність знаків, які використовуються для кодування інформації. Текст – впорядкований набір з елементів алфавіту. Як приклади алфавітів, використовуваних у сучасних ІС можна привести наступні:
Шифрування (encryption) – процес перетворення: вихідний текст, що також називають відкритим текстом (plaintext), заміняється шифрованим текстом (ciphertext). Дешифрування – зворотний шифруванню процес. На основі ключа зашифрований текст перетворюється у вихідний. Ключ – інформація, необхідна для безперешкодного шифрування і дешифрування текстів. Криптографічна система являє собою сімейство T перетворень відкритого тексту. Члени цього сімейства індексуються, чи позначаються символом k; параметр k є ключем. Простір ключів K -- це набір можливих значень ключа. Звичайно, ключ являє собою послідовний ряд букв алфавіту. Криптостійкістю називається характеристика шифру, визначальна його стійкість до дешифрування без знання ключа (тобто криптоаналізу). Мається на увазі кілька показників криптостійкості, серед яких:
Для сучасних криптографічних систем захисту інформації сформульовані наступні загальноприйняті вимоги:
5
2. Класифікація алгоритмів шифрування2.1 Класифікація алгоритмів
1.1. Потокові (шифрування потоку даних):
1.2. Блокові (шифрування даних поблочно):
6 1.2.3. Складені шифри:
2. Асиметричні (з відкритим ключем, public-key):
Крім того, є поділ алгоритмів шифрування на власне шифри (ciphers) і коди (codes). Шифри працюють з окремими бітами, буквами, символами. Коди оперують лінгвістичними елементами (склади, слова, фрази).
2.2. Симетричні потокові алгоритми шифрування Симетричні алгоритми шифрування базуються на тому, що відправник і одержувач інформації використовують той самий ключ. Цей ключ повинен зберігатися в таємниці і передаватися способом, що виключає його перехоплення. У потокових шифрах, тобто при шифруванні потоку даних, кожен біт вихідної інформації шифрується незалежно від інших за допомогою гамування. Гамування - накладення на відкриті дані гами шифру (випадкової чи псевдовипадкової послідовності одиниць і нулів) за визначеним правилом. Звичайно використовується "виключаюче ЧИ", назване також додаванням по модулю 2 і реалізоване в програмах асемблера командою XOR. Для розшифровування та ж гама накладається на зашифровані дані. При однократному використанні випадкової гами однакового розміру з зашифровуваними даними злам коду неможливий (так звані криптосистеми з одноразовим чи нескінченним ключем). У даному випадку "нескінченний" означає, що гама не повторюється. У деяких потокових шифрах ключ коротший повідомлення. Так, у системі Вернама для телеграфу використовується паперове кільце, що містить гаму. Звичайно, стійкість такого шифру не ідеальна. Найчастіше використовують гаму, одержувану за допомогою генератора псевдовипадкових чисел (ПВЧ). У цьому випадку ключ – це число (початкове значення, вектор ініціалізації) для запуску генератора ПВЧ. Кожен генератор ПВЧ має період, після якого послідовність повторюється. Очевидно, що період псевдовипадкової гами повинний перевищувати довжину інформації, що 7 зашифровується. Генератор ПВЧ вважається коректним, якщо спостереження фрагментів його виходу не дозволяє відновити всю послідовність при відомому алгоритмі, але невідомому початковому значенні. При використанні генератора ПВЧ можливі кілька варіантів: 1. Побітове шифрування потоку даних. Цифровий ключ використовується як початкове значення генератора ПВЧ, а вихідний потік бітів сумується по модулю 2 з вихідною інформацією. У таких системах відсутня властивість поширення помилок.
2.3. Симетричні, блокові алгоритми шифрування При блоковому шифруванні інформація розбивається на блоки фіксованих розмірів і шифрується поблочно. Блокові шифри бувають двох основних видів:
Шифри перестановок переставляють елементи відкритих даних (біти, букви, символи) у деякому новому порядку. Розрізняють шифри горизонтальної, вертикальної, подвійної перестановки, ґрати, лабіринти, лозунгові та ін. Шифри заміни заміняють елементи відкритих даних на інші елементи за визначеним правилом. Розрізняють шифри простої, складної, парної заміни, буквено-складове шифрування і шифри колонної заміни. Шифри заміни поділяються на дві групи:
У моноалфавітних шифрах заміни буква вихідного тексту замінюється на іншу, заздалегідь визначену букву. Наприклад, у коді Цезаря буква замінюється на букву, що віддалена від неї в латинському алфавіті на деяке число позицій. У поліалфавітних підстановках для заміни деякого символу вихідного повідомлення в кожному випадку його появи, послідовно використовуються різні символи з деякого набору. У сучасних криптографічних системах, як правило, використовують обидва способи шифрування (заміни і перестановки). Такий шифратор називають складеним. 8 2.4. Асиметричні алгоритми шифруванняВ асиметричних алгоритмах шифрування (чи криптографії з відкритим ключем) для зашифровування інформації використовують один ключ (відкритий), а для розшифровування - інший (секретний). Ці ключі різні і не можуть бути отримані один з одного. Схема обміну інформацією така:
3. Реалізація алгоритмів шифрування Алгоритми шифрування реалізуються програмними чи апаратними засобами. Є безліч програмних реалізацій різних алгоритмів. Через свою дешевість (деякі і зовсім безкоштовні), а також через зростання швидкодії процесорів ПЕОМ, простоти роботи і безвідмовності, вони дуже конкурентноздатні. Широко відома програма Diskreet з пакета Norton Utilities. Не можна не згадати пакет PGP (Pretty Good Privacy, версія 2.1, автор Philip Zimmermann), у якому комплексно вирішені практично всі проблеми захисту переданої інформації. Застосовано стиснення даних перед шифруванням, могутнє керування ключами, симетричний (IDEA) і асиметричний (RSA) алгоритми шифрування, обчислення контрольної функції для цифрового підпису, надійна генерація ключів. Публікації журналу "Монітор" з докладними описами різних алгоритмів і відповідними лістингами дають можливість кожному бажаючому написати свою програму (чи скористатися готовим лістингом). Апаратна реалізація алгоритмів можлива за допомогою спеціалізованих мікросхем (виробляються кристали для алгоритмів DH, RSA, DES, Skipjack, ДСТ 28147-89), або з використанням компонентів широкого призначення (через дешевину і високу швидкодію перспективні цифрові сигнальні процесори Серед російських розробок слід зазначити плати "Криптон" (фірма "Анкад") [2] і "Грим" (методологія й алгоритми фірми "ЛАН-Крипто", технічна розробка НПЦ "ЭЛиПС"). "Криптон" - одноплатні пристрої, що використовують криптопроцесори (спеціалізовані 32-розрядні мікроЕОМ, що також називаються "блюмінг"). Блюмінги апаратно реалізують алгоритми ДСТ 28147-89. Вони складаються з обчислювача й ОЗП для збереження ключів. Причому в криптопроцесорі є три області для збереження ключів, що дозволяє будувати багаторівневі ключові системи. Для більшої надійності шифрування одночасно працюють два 9 криптопроцесори. Блок даних у 64 біт вважається правильно зашифрованим якщо збігається інформація на виході обох блюмінгів. Швидкість шифрування - 250 КБ/c. Крім двох блюмінгів на платі розташований:
Випускаються наступні різновиди плат "Криптон":
У пристроях "Криптон-ес", "Криптон-3", "Криптон-4" ключі зберігаються у виді файлу на дискеті. У "Криптон-ик" ключі знаходяться на ІК, що затруднює підробку і копіювання. У платі "Грим" використовуються цифрові сигнальні процесори фірми Analog Devices ADSP-2105 і ADSP-2101, що дає швидкість шифрування відповідно 125 і 210 КБ/c. На платі є фізичний ДВЧ і ОЗП з програмами початкового тесту, перевірки прав доступу, завантаження і генерації ключів. Ключі зберігаються на нестандартно форматованій дискеті. Плата реалізує алгоритм ДСТ 28147-89.
4. Текст програмиПрограма написана на мові програмування Object Pascal в середовищі прогармування Delphi.
unit Unit2;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, ToolWin, StdCtrls, Menus, StdActns, ActnList, ImgList, Buttons, Mask, Spin;
Type {розділ описання використаних компонентів, що були розміщені на формі} TMain = class(TForm) StatusBar1: TStatusBar; Panel1: TPanel; 10 ToolBar1: TToolBar; ToolButton1, ToolButton2, ToolButton3, ToolButton4, ToolButton5, ToolButton6, ToolButton7, ToolButton8: TToolButton; MainMenu1: TMainMenu; N1, N2, N3, N4, N5, N6, N7, N8, N9, N10, N11, N12, N13, N14, N15, N16, N21, N31, N41, N51: TMenuItem; GroupBox1: TGroupBox; Memo1: TMemo; RadioGroup1: TRadioGroup; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; ActionList1: TActionList; ImageList1: TImageList; Open: TAction; Save: TAction; Close: TAction; Saveas: TAction; Exit: TAction; EditCopy1: TEditCopy; EditCut1: TEditCut; EditDelete1: TEditDelete; EditPaste1: TEditPaste; EditSelectAll1: TEditSelectAll; EditUndo1: TEditUndo; Label1: TLabel; SpinEdit1: TSpinEdit; Button1: TButton; Button2: TButton; BitBtn1: TBitBtn; Shifr: TAction; Deshifr: TAction; ToolButton9: TToolButton; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure OpenExecute(Sender: TObject); {розділ описання процедур обробки подій} procedure CloseExecute(Sender: TObject); procedure ExitExecute(Sender: TObject); procedure ShifrExecute(Sender: TObject); procedure DeshifrExecute(Sender: TObject); procedure SaveExecute(Sender: TObject); procedure SaveasExecute(Sender: TObject); procedure N13Click(Sender: TObject); procedure N12Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure N14Click(Sender: TObject); procedure N15Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
11 var Main: TMain; str:string; fname:string;
implementation
uses Unit1;
{$R *.DFM}
procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction); {описання процедури обробки події закриття форми} begin start.close; end;
procedure TMain.OpenExecute(Sender: TObject); {описання процедури обробки події, яка виникає при натисненні командної кнопки “відкрити файл”} var f:textfile; s:string; begin if OpenDialog1.Execute then begin fname:=OpenDialog1.FileName; AssignFile(F, OpenDialog1.FileName); Reset(F); memo1.lines.clear; while not eof(f) do begin readln(f,s); memo1.lines.add(s); end; CloseFile(F); end; end;
procedure TMain.CloseExecute(Sender: TObject); {описання процедури обробки події, яка виникає при натисненні командної кнопки “закрити файл”} begin memo1.lines.clear; end;
procedure TMain.ExitExecute(Sender: TObject); {описання процедури обробки події закриття головної форми} begin messagebeep(0); if MessageDlg('Ви справді хочете вийти ?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then start.close; end; 12 function xora(key:string;text:string):string; {описання процедури, що виконує шифрування\дешифрування текстової інформації text, використовуючи ключ key, XOR- методом } var longkey,res:string; i : integer; toto: char; begin res:='';longkey:=''; for i:=0 to (length(text) div length(key)) do longkey:=longkey+key; for i:=1 to length(text) do begin toto := chr((ord(text[i]) XOR ord(longkey[i]))); res:=res + toto; end; xora:=res; end;
procedure TMain.ShifrExecute(Sender: TObject); {описання процедури обробки події, яка виникає при натисненні командної кнопки “виконати шифрування”}
//--------спеціальна функція, яка виконує алгоритм перестановки (шифрування) function shifr(code:string;ci:integer):string; var nove,nov:string; i,n,ni:integer; begin nove:=''; for i:=1 to length(code) do nove:=nove+'.'; for i:=1 to length(code) do if code[i]='.' then code[i]:='@'; n:=1;ni:=1;nov:=nove; for i:=1 to length(code) do begin while n<ci do begin if ni>=length(nove) then ni:=ni-length(nove)+1 else inc(ni); if code[ni]<>'.' then inc(n); end; n:=1; nove[i]:=code[ni];code[ni]:='.'; while (code[ni]='.') and (nov<>code) do if ni>=length(nove) then ni:=ni-length(nove)+1 else inc(ni); end; for i:=1 to length(nove) do if nove[i]='@' then nove[i]:='.'; shifr:=nove; end; //------------------------------------------------ власне сама процедура var i,j:integer; choise,key:integer; // в залежності від вибору алгоритму, виконується той, чи інший keys:string; // алгоритм, результат виконання виводиться на компоненту begin // memo1 з використанням властивості Lines.strings key:=spinedit1.value; 13 choise:=main.RadioGroup1.ItemIndex; case choise of 0:begin // виконання алгоритму – шифрування методом Цезаря for j:=0 to memo1.lines.Count-1 do begin str:=memo1.lines.strings[j]; for i:=1 to length(str) do begin if (ord(str[i])>=32) then str[i]:=chr(ord(str[i])+key mod 255); end; memo1.lines.strings[j]:=str; end; end; 1: // виконання алгоритму – шифрування методом перестановки begin key:=spinedit1.value; for j:=0 to memo1.lines.Count-1 do begin memo1.lines.strings[j]:=(shifr(memo1.lines.strings[j],key)); end; end; 2:begin //виконання алгоритму – шифрування методом гамування key:=spinedit1.value; for j:=0 to memo1.lines.Count-1 do begin memo1.lines.strings[j]:=(encript(key,memo1.lines.strings[j])); end; end; 3:begin // виконання алгоритму – шифрування методом XOR keys:=inttostr(spinedit1.value); for j:=0 to memo1.lines.Count-1 do begin memo1.lines.strings[j]:=(xora(keys,memo1.lines.strings[j])); end; end; else end; end;
procedure TMain.DeshifrExecute(Sender: TObject); {описання процедури обробки події, яка виникає при натисненні командної кнопки “виконати дешифрування”}
//--------спеціальна функція, яка виконує алгоритм перестановки (дешифрування) function deshifr(code:string;ci:integer):string; var nove:string; i,n,ni:integer; begin nove:=''; for i:=1 to length(code) do nove:=nove+'.'; for i:=1 to length(code) do if code[i]='.' then code[i]:='@'; n:=1;ni:=1; for i:=1 to length(code) do 14 begin while n<ci do begin if ni>=length(nove) then ni:=ni-length(nove)+1 else inc(ni); if nove[ni]='.' then inc(n); end; n:=1; nove[ni]:=code[i]; if i<>length(nove) then begin while nove[ni]<>'.' do if ni>=length(nove) then ni:=ni-length(nove)+1 else inc(ni); end; end; for i:=1 to length(nove) do if nove[i]='@' then nove[i]:='.'; deshifr:=nove; end; //------------------------------------------власне і є сама процедура var choise,key,j,i:integer; keys:string; begin key:=spinedit1.value; choise:=main.RadioGroup1.ItemIndex; case choise of 0:begin // виконання алгоритму – дешифрування методом Цезаря for j:=0 to memo1.lines.Count-1 do begin str:=memo1.lines.strings[j]; for i:=1 to length(str)+1 do begin if (ord(str[i])>=32)then str[i]:=chr(ord(str[i])-key mod 255); end; memo1.lines.strings[j]:=str; end; end; 1:begin // виконання алгоритму – дешифрування методом перестановки key:=spinedit1.value; for j:=0 to memo1.lines.Count-1 do begin memo1.lines.strings[j]:=(deshifr(memo1.lines.strings[j],key)); end; end; 2:begin //виконання алгоритму – дешифрування методом гамування key:=spinedit1.value; for j:=0 to memo1.lines.Count-1 do begin memo1.lines.strings[j]:=(encript(key,memo1.lines.strings[j])); end; end; 3:begin // виконання алгоритму – дешифрування методом XOR
15 keys:=inttostr(spinedit1.value); for j:=0 to memo1.lines.Count-1 do begin memo1.lines.strings[j]:=(xora(keys,memo1.lines.strings[j])); end; end; else end;
end;
procedure TMain.SaveExecute(Sender: TObject); {описання процедури обробки події, яка виникає при натисненні командної кнопки “ зберегти файл ”} var f:textfile; i:integer; begin if fname<>'' then begin AssignFile(F,FName); Rewrite(F); for i:=0 to memo1.lines.count-1 do begin writeln(f,memo1.lines.strings[i]); end; CloseFile(F); end; end;
procedure TMain.SaveasExecute(Sender: TObject); {описання процедури обробки події, яка виникає при натисненні командної кнопки “ зберегти файл ”} var f:textfile; i:integer; begin if saveDialog1.Execute then begin AssignFile(F, SaveDialog1.FileName); Rewrite(F); for i:=0 to memo1.lines.count-1 do begin writeln(f,memo1.lines.strings[i]); end; CloseFile(F); end; end;
procedure TMain.N15Click(Sender: TObject); {процедура виведення інформації про програму } begin Application.MessageBox( ' Курсова робота на тему: "Алгоритми шифрування та дешифрування текстової 16 інформації". ', ' *** Про програму *** ', MB_OK); end;
end.
5. Інструкція користувача
Рис. 1. Рис. 2. При запуску програми CrypText.exe на екран відразу ж виводиться заставка із запрошенням натиснути клавішу для продовження (Рис. 1.). При натисненні на відповідну кнопку з’являється головне вікно додатку (Рис.2.). Далі для продовження роботи з програмою шифрування\дешифруванння текстової інформації користувач може: сам набрати текст, вставити текст із буфера обміну, відкрити файл із уже набраним текстом. Наступним кроком буде вибір алгоритму за яким буде здійснюватися шифрування інформації. Як видно із рис. 2., таких алгоритмів є 4:
Після вибору алгоритму користувач натикає на клавішу “Шифрувати”: програма виконує переведення вихідного тексту у зашифрований. Аналогічно виконуються дії і для розшифрування закодованого тексту. Також є можливість зберегти зашифрований (розшифрований) текст у тому ж самому файлі або 17 створити новий. Для полегшення всіх операцій всі вони винесені на панель швидкого доступу.
6. Тестовий приклад В якості прикладу розглянемо результати застосування різних алгоритмів для шифрування наступного тексту програми:
Program SAT; uses crt; var i,j,n:integer; C:char; Procedure Ansciicode; Begin for i:=0 to 256 do begin c:=chr(i); Write(i:3,'---',c:3,' '); if i=100 then readkey; end; end; Begin Clrscr; write(#7); Ansciicode; write(#7); readkey; End.
Після шифрування симетричним алгоритмом XOR-шифрування маємо наступний текст:
b@]U@S_asf GAWAQ@F DS@[‑X‑\[\FWUW@ qQZS@ b@]QWVG@Ws\AQ[[Q]VW pWU[\ T]@[[1]F] QQZ@[ e@[FW[‑‑Q‑ [T[ [1][1]FZW\@WSVYWK
W\V W\V pWU[\ 18 q^@AQ@ E@[FW s\AQ[[Q]VW E@[FW @WSVYWK w\V
Після застосування симетричного алгоритму гамування, маємо
yІЁYW.ZryлЌ \іўM1 _Ўµ‑LP)VO[1]ЦШi‘\—k‹ аз‑fF @J„ yІЁ]@6DюШn—R›zЯУK. аз|@* аЎQW\*@џВrФ аз‑\cЬЮoЬRЫ"ђа\|VBxњЉ*ЙП.ЊД$6p z&1¤
аз‑\cGЦ‹,Д аз‑\cZџ–=ФТ9ђ—5LL” аз[Kx ‚ўYL а„RW а°LL&R[1]–Ќ а†PV*BWЫУ& а°LL&R[1]–Ќ аµ[D(X
…©Z
Порівнявши зашифровані тексти можна сказати, що алгоритм гамування більш криптостійкий (у даній програмі XOR-шифрування виконане для кожного символу кодової таблиці окремо, а гамування – зашифровує цілий рядок). Ця стійкість пояснюється досить просто: перший символ зашифровується за вказаним ключем, а інші зашифровуються вже зміненим ключем.
Розглянемо також простий алгоритм перестановки. Отримаємо g ;rAoTmaSrP ste;c rsu 19 ,neajt;,eriirgv:n h :;c Cra crnieoecdeAodirc usP; Bne ig o:t5og io ef06i 2n b r = d ch)r(,-: c;t3',; (i'c): :3 i-'r- i=', eW i= nay f0ed 0r; heie kt1 e ; d n e dn; gB eni lrC;src r(;i7w)et# nieAc i do;cs r(;i7w)et# ee kr;y da dn.E
Після застосування алгоритму Цезаря дістанемо
Rtqitco"UCV= wugu"etv= xct"k.l.p<kpvgigt= """"E<ejct= Rtqegfwtg"Cpuekkeqfg= """Dgikp ""hqt"k<?2"vq"478"fq"dgikp """""""e<?ejt*k+="Ytkvg*k<5.)///).e<5.)")+= """""""kh"k?322"vjgp"tgcfmg{= """""""""""""""""""""""gpf= """gpf= "Dgikp ""Entuet= ""ytkvg*%9+= ""Cpuekkeqfg= ""ytkvg*%9+= ""tgcfmg{= "Gpf0
20 Усі алгоритми використані в даній курсовій роботі мають дуже низьку криптостійкість порівняно з сучасними алгоритмами такими як: RSA, DES, ДСТ 28147-89 і багато інших. Для збільшення їхньої криптостійкості рекомендовано користуватися алгоритмами стиснення інформації перед власне зашифровуванням.
Висновки Варто відмітити, що шифрування інформації не є панацеєю. Його варто розглядати тільки як один з методів захисту інформації і застосовувати обов'язково в сполученні з законодавчими, організаційними й іншими мірами. Отже, розроблена мною програма має відчутні переваги в порівнянні з аналогами, вона досить компактна, що досить важливо на даний час, цю програму можна переносити на гнучких носіях інформації (HD). Маю наміри надалі вдосконалювати дану програму.
Література
Література
КомментарииКомментариев пока нет Пожалуйста, авторизуйтесь, чтобы оставить комментарий. |