OSNOVA.DOC


МЕТА I ЗАВДАННЯ КУРСОВОЇ РОБОТИ
Згідно з навчальним планом для студентів спеціальності “Прикладна математика” факультету прикладної математики і комп’ютерно-інтегрованих систем УДУВГП передбачено виконання курсової роботи з дисциплши “Програмування”.
Виконання цієї роботи є завершальним етапом вивчення дисципліни ”Програмування” i має своєю головною метою:
Засвоєння методики підготовки розв’язання прикладних задач з використанням ПЕОМ;
Закріплення основних прийомів програмування з використанням об’єктно-орієнтованого підходу;
Закріплення вивчених та освоєння нових можливостей візуально-подійного підходу в програмуванні;
Освоєння методики створення прикладних комплексних додатків та самостійне вивчення спеціальних алгоритмів, що стосуються окремої теми.

Кожна курсова робота є проблемно-орієнтованою, а тому містить певну наукову новизну. Виконання роботи сприяє залученню студентів до сучасних проблем програмування і є підгрунтям для майбутніх дипломних робіт.
Курсова робота повинна містити
постановку задачі;
схеми алгоритмів;
складену програму та її реалізацію на ПЕОМ з використанням візуально-подійного та об’єктно-орієнтованого підходів;
тестовий приклад;
аналіз отриманих результатів;
висновки.
В прoцeci виконання курсової роботи студент повинен узгоджувати з керівником роботи вci відхилення від поставленого завдання, може консуль-туватися по незрозумілих та важких питаннях на консультаціях i заняттях. Виконання роботи розбивається на етапи. При цьому своєчасність i якість виконання студентом кожного етапу фіксується в журналі викладача, а надалі враховується при захисті курсової роботи та її оцінюванні.

1. Тематика курсових робіт
1.1. Вибір теми курсової роботи
Тема кожної курсової роботи визначається керівником роботи з урахуванням побажань студента, його інтересів та теми майбутньої дипломної роботи.
Тематика курсовик робіт розробляється i затверджується на кафедрі прикладної математики. Всі теми відповідають проблемно-орієнтованим задачам, а тому вимагають від студента творчого підходу до їх розв’язання.



1.2. Приклади тем курсових робіт
База даних “Деканат”.
База даних “Кафедра”.
Електронний довідник.
Інформаційно-довідкова система “Медпункт”.
Інформаційно-довідкова система “Аналіз ринку попиту”.
Інформаційно-довідкова система: “Рейтингова таблиця”.
Інтелектуальна система “Запитання-відповідь” (із заданої предметній області).
Аналіз дорожньо-транспортних пригод на дорогах області.
Інформаційно-довідкова система “Курси валют”.
Інформаційно-довідкова система “Облік роботи приватних таксобусів”.
Інформаційно-довідкова система “Облік товарів у промисловому магазині”.
Інформаційно-довідкова система “Облік товарно-матеріальних цінностей на складі”.
База даних „Екологія” ( про екологічні санкції з підприємств-забруднювачів навколишнього середовища).
Програма перегляду графічних PCX-файлів.
Програма запису і перегляду графічних BMP-файлів.
Моделювання маятника Капіци .
Розв’язання диференціальних рівнянь методом Монте-Карло.
Програма для відтворення звукових WAV-файлів.
Трьохвимірний лабіринт.
Кодування і декодування файлів для пересилки по електронній пошті.
Дослідження геометричних властивостей фракталів.
Управління космічним апаратом на орбіті і при польоті на Місяць.
Перетворення вихідного тексту програми на мові Pascal в RTF-файл.
Чисельне розв’язання нелінійних рівнянь ( з графічною інтерпретацією уточнення коренів).
Чисельне розв’язання СЛАР.
Інтерполяція функцій.
Математична обробка результатів експерименту.
Наближене обчислення визначених інтегралів (звичайних, подвійних, потрійних).
Комп’ютерне моделювання розв’язку ЗЛП графічним методом.
Моделювання деяких фізичних процесів за допомогою ЕОМ.
Побудова гідродинамічних і ізотермічних полів за допомогою ЕОМ.
QR-алгоритми розв’язання СЛАР (шляхом перетворення матриці до 3-х діагональної).
Математичні моделі переслідування.
Порівняльний аналіз алгоритмів пошуку в масивах.
Порівняльний аналіз алгоритмів пошуку в текстах.
Порівняльний аналіз алгоритмів сортування масивів.
Порівняльний аналіз сортування файлів та послідовностей.
Алгоритми з використанням динамічних структур даних.
Алгоритми шифрування та дешифрування текстів.
Алгоритми архівування файлів.
ООП- технології.
Алгоритми комп’ютерної анімації (побудова рухомих графічних зображень).
Розробка додаткового модуля в Delphi (Borland C++ Builder) для виконання арифметичних дій з досить малими та великими числами.
Стрічковий компілятор.
Розробка бази даних графічних зображень.
Комп’ютерна ідентифікація кривих та поверхонь.
Драйвери-кирилізатори клавіатур.
Дис-асемблерування exe-файлів, написаних на C++ та Pascal.
Віруси - антивіруси.
Програми - захисники від копіювання.
Робота з відеопам’яттю ПК.
Виконання музичних творів на ПК (програмування музичних творів на внутрішній динамік).
Програмування розпаралелення процесів на ПК.
Розпізнавання образів: автоматичне розпізнавання тексту.
Алгоритми перенумерації вузлів трикутної сітки для мінімізації ширини стрічки матриці жорсткості.
Автоматизація побудови кросвордів.
Прямі методи розв’язання розрідження систем лінійних алгебричних рівнянь.
Ітераційні методи розв’язання розріджених систем лінійних алгебричних рівнянь.
Алгоритми розбиття плоскої кривої на скінчені елементи.
Навчально контролююча програма “C++Builder”.
Моделювання руху автотранспорту та пішоходів на перехресті.
Навчально контролююча програма “Основи об’єктно – орієнтованого програмування “ ( Object Pascal та С++).
Навчально – контролююча програма “Visual C++”.
Алгоритми розбиття плоского многокутнка на скінчені трикутні елементи.
Програмування структур даних з використанням орієнтованих графів та їх застосування.
Програмування структур даних з використанням неорієнтованих графів та їх застосування.
Програмування алгоритмів для зовнішньої пам’яті.
Програмування алгоритмів управління оперативною пам’яттю.
Порівняльний аналіз виконання різних програм різними процесорами.
Порівняльний аналіз виконання різних програм в різних середовищах програмування (GW Basic, Turbo Basic, Turbo , Borland Pascal, Borland C++, Delphi, Borland C++ Builder).

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
конфіденційної інформації за допомогою каналів зв'язку (наприклад, електронної пошти), встановлення істиності переданих повідомлень, збереження інформації на носіях у зашифрованому вигляді. Криптографія дає можливість перетворити інформацію таким чином, що її прочитання (відновлення) можливе тільки при знанні ключа.
Як інформацію, що підлягає шифруванню і дешифруванню, будемо розглядати тексти, побудовані на деякому алфавіті. Під цими термінами розуміється наступне:
Алфавіт – послідовність знаків, які використовуються для кодування інформації.
Текст – впорядкований набір з елементів алфавіту.
Як приклади алфавітів, використовуваних у сучасних ІС можна привести наступні:
алфавіт Z33 – 32 букви російського алфавіту та пробіл;
алфавіт Z256 – символи, що входять у стандартні коди ASCII і КОІ-8;
бінарний алфавіт Z2={0,1};
вісімковий алфавіт або шістнадцятковий алфавіт.
Шифрування (encryption) – процес перетворення: вихідний текст, що також називають відкритим текстом (plaintext), заміняється шифрованим текстом (ciphertext).
Дешифрування – зворотний шифруванню процес. На основі ключа зашифрований текст перетворюється у вихідний.
Ключ – інформація, необхідна для безперешкодного шифрування і дешифрування текстів.
Криптографічна система являє собою сімейство T перетворень відкритого тексту. Члени цього сімейства індексуються, чи позначаються символом k; параметр k є ключем. Простір ключів K -- це набір можливих значень ключа. Звичайно, ключ являє собою послідовний ряд букв алфавіту. Криптостійкістю називається характеристика шифру, визначальна його стійкість до дешифрування без знання ключа (тобто криптоаналізу). Мається на увазі кілька показників криптостійкості, серед яких:
кількість усіх можливих ключів;
середній час, необхідний для криптоаналізу.
Для сучасних криптографічних систем захисту інформації сформульовані наступні загальноприйняті вимоги:
зашифроване повідомлення повинне піддаватися читанню тільки при наявності ключа;
число операцій, необхідних для визначення використаного ключа шифрування по фрагменті шифрованого повідомлення і відповідного йому відкритого тексту, повинне бути не менше загального числа можливих ключів;
високий рівень захисту даних проти дешифрування і можливої модифікації;
5
захищеність інформації повинна ґрунтуватися тільки на знанні ключа і не залежати від того, відомий алгоритм чи ні (правило Кірхгоффа);
мала зміна вихідного тексту чи ключа повинна приводити до значної зміни шифрованого тексту (ефект "обвалу");
область значень ключа повинна виключати можливість дешифрування даних шляхом перебору значень ключа;
економічність реалізації алгоритму при достатній швидкодії;
мати строгу нижню оцінку і виходити за межі можливостей сучасних комп'ютерів (з урахуванням можливості використання мережевих обчислень);
знання алгоритму шифрування не повинне впливати на надійність захисту;
структурні елементи алгоритму шифрування повинні бути незмінними;
додаткові біти, що вводяться в повідомлення в процесі шифрування, повинні бути надійно сховані в шифрованому тексті;
довжина шифрованого тексту повинна дорівнювати довжині вихідного тексту;
не повинно бути простих і легко встановлюваних залежністю між ключами, послідовно використовуваними в процесі шифрування;
будь-який ключ з безлічі можливих повинний забезпечувати надійний захист інформації;
алгоритм повинний допускати як програмну, так і апаратну реалізацію. При цьому зміна довжини ключа не повинна вести до якісного погіршення алгоритму шифрування.

2. Класифікація алгоритмів шифрування
2.1 Класифікація алгоритмів
Симетричні (із секретним, єдиним ключем, одноключові, single-key).
1.1. Потокові (шифрування потоку даних):
з одноразовим чи нескінченним ключем (infinite-key cipher);
зі скінченним ключем (система Вернама - Vernam);
на основі генератора псевдовипадкових чисел (ПВЧ).
1.2. Блокові (шифрування даних поблочно): 1.2.1. Шифри перестановки (permutation, P-блоки); 1.2.2. Шифри заміни (підстановки, substitution, S-блоки):
моноалфавітні (код Цезаря);
поліалфавітні (шифр Видженера, циліндр Джефферсона, диск Уетстоуна);
6
1.2.3. Складені шифри:
Lucipher (фірма IBM, США);
DES (Data Encryption Standard, США);
FEAL-1 (Fast Enciphering Algoritm, Японія);
IDEA/IPES (International Data Encryption Algorithm, Improved Proposed Encryption Standard, фірма Ascom-Tech AG, Швейцарія);
B-Crypt (фірма British Telecom, Великобританія).
2. Асиметричні (з відкритим ключем, public-key):
Діффі-Хеллман DH (Diffie, Hellman);
Райвест-Шамір-Адлеман RSA (Rivest, Shamir, Adleman);
Эль-Гамаль (ElGamal).
Крім того, є поділ алгоритмів шифрування на власне шифри (ciphers) і коди (codes). Шифри працюють з окремими бітами, буквами, символами. Коди оперують лінгвістичними елементами (склади, слова, фрази).

2.2. Симетричні потокові алгоритми шифрування
Симетричні алгоритми шифрування базуються на тому, що відправник і одержувач інформації використовують той самий ключ. Цей ключ повинен зберігатися в таємниці і передаватися способом, що виключає його перехоплення.
У потокових шифрах, тобто при шифруванні потоку даних, кожен біт вихідної інформації шифрується незалежно від інших за допомогою гамування.
Гамування - накладення на відкриті дані гами шифру (випадкової чи псевдовипадкової послідовності одиниць і нулів) за визначеним правилом. Звичайно використовується "виключаюче ЧИ", назване також додаванням по модулю 2 і реалізоване в програмах асемблера командою XOR. Для розшифровування та ж гама накладається на зашифровані дані.
При однократному використанні випадкової гами однакового розміру з зашифровуваними даними злам коду неможливий (так звані криптосистеми з одноразовим чи нескінченним ключем). У даному випадку "нескінченний" означає, що гама не повторюється.
У деяких потокових шифрах ключ коротший повідомлення. Так, у системі Вернама для телеграфу використовується паперове кільце, що містить гаму. Звичайно, стійкість такого шифру не ідеальна.
Найчастіше використовують гаму, одержувану за допомогою генератора псевдовипадкових чисел (ПВЧ). У цьому випадку ключ – це число (початкове значення, вектор ініціалізації) для запуску генератора ПВЧ. Кожен генератор ПВЧ має період, після якого послідовність повторюється. Очевидно, що період псевдовипадкової гами повинний перевищувати довжину інформації, що
7
зашифровується. Генератор ПВЧ вважається коректним, якщо спостереження фрагментів його виходу не дозволяє відновити всю послідовність при відомому алгоритмі, але невідомому початковому значенні.
При використанні генератора ПВЧ можливі кілька варіантів:
1. Побітове шифрування потоку даних. Цифровий ключ використовується як початкове значення генератора ПВЧ, а вихідний потік бітів сумується по модулю 2 з вихідною інформацією. У таких системах відсутня властивість поширення помилок.
Побітове шифрування потоку даних зі зворотним зв'язком (ЗЗ) по шифртексту. Така система аналогічна попередній, за винятком того, що шифртекст повертається як параметр у генератор ПВЧ. Характерна властивість поширення помилок. Область поширення помилки залежить від структури генератора ПВЧ.
Побітове шифрування потоку даних із ЗЗ по вихідному тексті. Базою генератора ПВЧ є вихідна інформація. Характерна властивість необмеженого поширення помилки.
Побітове шифрування потоку даних із ЗЗ по шифртексті і по вихідному тексті.

2.3. Симетричні, блокові алгоритми шифрування
При блоковому шифруванні інформація розбивається на блоки фіксованих розмірів і шифрується поблочно. Блокові шифри бувають двох основних видів:
шифри перестановки (transposition, permutation, P-блоки);
шифри заміни (підстановки, substitution, S-блоки).
Шифри перестановок переставляють елементи відкритих даних (біти, букви, символи) у деякому новому порядку. Розрізняють шифри горизонтальної, вертикальної, подвійної перестановки, ґрати, лабіринти, лозунгові та ін.
Шифри заміни заміняють елементи відкритих даних на інші елементи за визначеним правилом. Розрізняють шифри простої, складної, парної заміни, буквено-складове шифрування і шифри колонної заміни. Шифри заміни поділяються на дві групи:
моноалфавітні (код Цезаря) ;
поліалфавітні (шифр Відженера, циліндр Джефферсона, диск Уэтстоуна).
У моноалфавітних шифрах заміни буква вихідного тексту замінюється на іншу, заздалегідь визначену букву. Наприклад, у коді Цезаря буква замінюється на букву, що віддалена від неї в латинському алфавіті на деяке число позицій.
У поліалфавітних підстановках для заміни деякого символу вихідного повідомлення в кожному випадку його появи, послідовно використовуються різні символи з деякого набору.
У сучасних криптографічних системах, як правило, використовують обидва способи шифрування (заміни і перестановки). Такий шифратор називають складеним.
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.
Крім двох блюмінгів на платі розташований:
контролер сполучення із шиною комп'ютера (за винятком "Криптон-ес" плати розраховані на роботу із шиною ISA);
BIOS плати, призначений для здійснення інтерфейсу з комп'ютером і виконуючий самотестування пристрою і введення ключів у криптопроцесори;
датчик випадкових чисел (ДВЧ) для вироблення ключів шифрування, виконаний на шумових діодах.
Випускаються наступні різновиди плат "Криптон":
"Криптон-ес" призначена для ПЕОМ серії ЄС 1841-1845;
"Криптон-3";
"Криптон-4" (скорочені габаритні розміри за рахунок переміщення ряду дискретних елементів у базові кристали, підвищена швидкість обміну завдяки внутрішньому буферу на 8 байт);
"Криптон-ик" додатково оснащена контролером ІК (інтелектуальна картка).
У пристроях "Криптон-ес", "Криптон-3", "Криптон-4" ключі зберігаються у виді файлу на дискеті. У "Криптон-ик" ключі знаходяться на ІК, що затруднює підробку і копіювання.
У платі "Грим" використовуються цифрові сигнальні процесори фірми Analog Devices ADSP-2105 і ADSP-2101, що дає швидкість шифрування відповідно 125 і 210 КБ/c. На платі є фізичний ДВЧ і ОЗП з програмами початкового тесту, перевірки прав доступу, завантаження і генерації ключів. Ключі зберігаються на нестандартно форматованій дискеті. Плата реалізує алгоритм ДСТ 28147-89.

4. Текст програми
Програма написана на мові програмування Object Pascal в середовищі прогармування Delphi.

unit Unit2;

interface

uses
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
Type {розділ описання використаних компонентів, що були розміщені на формі}
TMain = class(TForm)
StatusBar1: TStatusBar;
Panel1: TPanel;
10
ToolBar1: TToolBar;
ToolButton1, ToolButton2, ToolButton3, ToolButton4, ToolButton5
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
procedure OpenExecute(Sender: TObject); {розділ описання процедур обробки подій}
procedure CloseExecute(Sender: TObject);
procedure ExitExecute(Sender: TObject);
procedure ShifrExecute(Sender: TObject);
procedure DeshifrExecute(
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·lose(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
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·; {описання процедури обробки події, яка виникає при натисненні командної кнопки “виконати шифрування”}

//--------спеціальна функція, яка виконує алгоритм перестановки (шифрування)
function shifr(code:string;ci:integer):string;
var nove,nov:string;

·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
· 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
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·i-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

·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
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:
Алгоритм Цезаря
Перестановка
Гамування
XOR
Після вибору алгоритму користувач натикає на клавішу “Шифрувати”: програма виконує переведення вихідного тексту у зашифрований. Аналогічно виконуються дії і для розшифрування закодованого тексту. Також є можливість зберегти зашифрований (розшифрований) текст у тому ж самому файлі або
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-шифрування маємо наступний текст:

[email protected]][email protected]_asf
GAWA[email protected]
[email protected][X\[\[email protected]
[email protected]
[email protected]][email protected]s\AQ[[Q]VW
pWU[\
T]@[

Приложенные файлы

  • doc 18395272
    Размер файла: 182 kB Загрузок: 0

Добавить комментарий