Реалізація алгоритмів кодування тексту: шифр Бекона
Сучасні методи захисту текстової інформації. Порівняльний аналіз шифру Бекона з іншими відомими шифрами. Практичне використання алгоритмів кодування тексту. Написання програми "Шифр Бекона", використані компоненти для реалізації алгоритму, їх властивості.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 28.03.2016 |
Размер файла | 606,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
ВСТУП
З давніх-давен люди використовували різні види інформації. Інформація зберігалася в основному на папері, і часто її могли привласнити. З часом люди почали використовувати різні методи для того, щоб приховати конфіденційну інформацію, і вона була доступна обмеженому колу осіб. Перші способи приховання важливої інформації були досить неординарними і небезпечними. Згодом люди почали використовувати шифрування тексту з метою конфіденційності і несанкціонованого доступу до неї.
Протягом багатьох століть людство використовувало криптографічні методи для захисту інформації при її передачі та зберіганні. Приблизно до кінця XIX ст. ці методи стали об'єктом математичного вивчення. До теперішнього часу криптографія містить безліч результатів (теорем, алгоритмів), як фундаментальних, так і прикладних. Заняття криптографією неможливо без серйозної математичної підготовки. Галузь математики, що вивчає захист інформації, традиційно називається криптологією і підрозділяється на криптографію, що займається розробкою нових методів і обґрунтуванням їх коректності, і криптоаналіз, завдання якого - інтенсивне вивчення існуючих методів, часто з метою реального розкриття секретів іншого боку. Криптографія та криптоаналіз перебувають у тісній взаємодії один з одним і з практичними потребами і розвиваються паралельно закритими урядовими організаціями багатьох держав і міжнародним науковим співтовариством. В даний час існують тисячі криптографічних систем, реалізованих як програмно, так і апаратно. Але реалізувати криптографічну систему в минулому столітті було дуже важко. Однак, поява в середині нашого століття перших електронно-обчислювальних машин кардинально змінила ситуацію. З проникненням комп'ютерів у різні сфери життя виникла принципово нова галузь господарства - інформаційна індустрія. Обсяг циркулюючої в суспільстві інформації з тих пір стабільно зростає за експоненціальним законом - він приблизно подвоюється кожні п'ять років. Фактично, на порозі нового тисячоліття людство створило інформаційну цивілізацію, в якій від успішної роботи засобів обробки інформації залежить саме благополуччя і навіть виживання людства в його нинішній якості. З розвитком ЕОМ характер інформаційних взаємодій надзвичайно ускладнився, і поряд з класичним завданням захисту переданих текстових повідомлень від несанкціонованого прочитання і спотворення виникли нові завдання сфери захисту інформації. Обчислювальні "здібності" сучасних комп'ютерів підняли на абсолютно новий рівень як можливості з реалізації шифрів, раніше немислимих через свою високої складності, так і можливості аналітиків щодо їх злому. Практична криптографія перетворилася в самостійну науку. Були створені методи вирішення нових, нетрадиційних завдань сфери захисту інформації, найбільш відомими з яких є завдання підпису цифрового документа.
Метою написання курсової роботи є дослідження методів захисту інформації і реалізація шифру Бекона.
Завданням даної курсової роботи є:
-детально розглянути середовище для створення програм - С++ Builder 6;
-дослідити сучасні методи захисту текстової інформації;
-зробити порівняльний аналіз шифру Бекона з іншими відомими шифрами;
-показати роль шифрування текстової інформації в сучасному світі;
-реалізувати алгоритм і створити відповідне ПО на мові С++ у середовищі С++ Builder 6 для шифрування і розшифрування текстової інформації.
Об'єктом дослідження є шифр Бекона.
Предметом дослідження є місце сучасної криптографії серед інших незалежних наук, суть і роль шифру Бекона.
Для того, щоб вирішити ряд поставлених завдань, курсову роботу розділено на три розділи.
У першому розділі розглянуто суть і практичне використання алгоритмів шифрування тексту.
У другому розділі розглянуто основні особливості мови С++ і середовище для програмування С++ Builder 6;
У третьому розділі розглянуто детальний опис створеної програми а також звернемо увагу на труднощі які виникли при написані програми.
Закінчується робота висновками, які узагальнюють весь матеріал і дають чітку оцінку даного шифру порівняно з іншими шифрами.
При написанні роботи використано багато підручників про криптографію, які допомогли краще зрозуміти суть і роль криптографії у сучасному світі. Такими питаннями займалося небагато вчених, але вони зробили вагомий внесок у криптографію. Над питаннями про шифрування і розшифрування даних працювали такі вчені: Болтов А.А., Брассар Ж.К., Гатченко Н.А., Ісаєв А.С., Яковлев А.Д. Серед них вітчизняні вчені : Захарова М.В., Піскунова Т.С., Шпара С.В.
РОЗДІЛ І.АЛГОРИТМ КОДУВАННЯ ТЕКСТУ
1.1 Практичне використання алгоритмів кодування тексту
Сьогодні велика кількість різних організацій старається не розголошувати інформацію про свої розробки , статистичні дані і т.д. Але, зберігаючи інформацію на різних фізичних носіях, вона може бути викрадена і використана у поганих цілях . «Хто володіє інформацією, той володіє світом», - сказав колись Уїнстон Черчіль. Замінити фізичний носій може і будь-хто, при цьому виявити викрадача дуже важко. Як вирішення проблеми пропонується сотні сервіс-сховищ даних . Сервіси надають можливість для зберігання і отримання будь-якого обсягу даних, у будь-який час, з будь-якої точки земної поверхні. Але їх можуть зламати і скористатися вашими даними. Надійний захист інформації може дати тільки шифрування даних - оборотне перетворення даних з метою приховання інформації. Цей процес складається з двох частин : шифрування і розшифрування. Дані можуть зберігатися і передаватися у різних носіях в зашифрованому вигляді і стають доступні тільки при завантаженні ключа шифрування. Ключ - інформація, необхідна для безперешкодного шифрування й дешифрування текстів. Ключ для шифрування і розшифрування може бути як однаковий, так і різний. В залежності від ключа поділяють шифрування на симетричне і асиметричне . При симетричному шифруванні використовується спільний ключ для зашифрування і розшифрування інформації. При цьому вказаний тип шифрування має дуже багато недоліків: ключ потрібно передавати іншій стороні для розшифрування і його можуть перехопити. Але швидкість зашифрування і розшифрування набагато більша, ніж у асиметричному методі . Асиметричний тип шифрування кращий тим, що немає необхідності передавати ключ , він відкритий . Повідомлення можна розшифрувати, використовуючи відповідний алгоритм. Але такий тип шифрування значно повільніший. Криптографія - це наука, яка займається шифрування інформації. Вона заснувалася ще в часи до нашої ери. Зараз налічується дуже багато видів шрифтів, всі вони відрізняють своєю складністю, особливістю ключа. Зашифрувати можна будь-який текст, для цього придумано безліч способів. Створено безліч машин, які шифрують текст з високою швидкістю. Особливо актуальними шифрувальні машини були під час різних війн . Вони коштували дуже дорого і були дуже рідкісними, а шифри, використанні ними, - поганими і легко розшифровувалися. Складність шифру визначається часом для розшифрування повідомлення без ключа, а також кількістю всіх можливих ключів . Для сучасних криптографічних систем захисту інформації сформульовані наступні загальноприйняті вимоги:
- Зашифроване повідомлення повинно піддаватися читанню тільки при наявності ключа.
- Число операцій, необхідних для визначення використаного ключа шифрування за фрагментом шифрованого повідомлення і відповідного йому відкритого тексту, повинно бути не менше загального числа можливих ключів.
- Число операцій, необхідних для розшифровки інформації шляхом перебору різноманітних ключів повинно мати строгу нижню оцінку і виходити за межі можливостей сучасних комп'ютерів (з урахуванням можливості використання мережевих обчислень).
- Знання алгоритму шифрування не повинно впливати на надійність захисту.
- Незначна зміна ключа повинна приводити до істотної зміни виду зашифрованого повідомлення навіть при використанні одного і того ж ключа.
- Структурні елементи алгоритму шифрування повинні бути незмінними.
- Додаткові біти, що вводяться в повідомлення в процесі шифрування, повинні бути повністю та надійно сховані в зашифрованому тексті.
- Довжина шифрованого тексту повинна бути рівною довжині вихідного тексту.
- Не повинно бути простих і легко встановлюваних залежністю між ключами, послідовно використовуються в процесі шифрування.
- Будь-який ключ із безлічі можливих повинен забезпечувати надійний захист інформації.
- Алгоритм повинен допускати як програмну, так і апаратну реалізацію, при цьому зміна довжини ключа не повинна призводити до якісного погіршення алгоритму шифрування.[7]
Захист даних з допомогою шифрування - одне з можливих рішень проблеми безпеки інформації . Зашифровані дані стають доступними тільки для того, хто знає, як їх розшифрувати, і тому викрадення зашифрованих даних абсолютно безглузде для несанкціонованих користувачів. Криптографія забезпечує не тільки таємність інформації, але і її справжність. Секретність підтримується шляхом шифрування окремих повідомлень або всього файлу цілком. Справжність інформації підтверджується шляхом шифрування спеціальним кодом, що містить всю інформацію, що перевіряється одержувачем для підтвердження особи автора. Він не тільки засвідчує походження інформації, але і гарантує її незмінність . Навіть просте перетворення інформації є дуже ефективним засобом, що дає можливість приховати її сенс від більшості людей.
Але розшифрування інформації зазвичай займало багато часу , однак з розвитком ПК розшифрувати текст стало можливо за декілька секунд .Тому сьогодні криптографія особливо розвинулася. Банки та інші фінансові установи піклуються про збереження своєї безпеки і приділяють особливу увагу шифруванню конфіденційної інформації. У ХХ ст. криптографія припинила використовуватися тільки у військові справі і розширилась у всі сфери життя, ставши незалежно наукою і об'єктом математичних досліджень [4].Зараз високо ціняться фахівці у цій сфері.
Отже, розглянувши цей розділ можна зробити висновки що кожні дані можуть бути викрадені , персоналізовані і використані у поганих цілях. З метою запобігання цього є шифрування інформації , яке забезпечує безпечне зберігання і передачу даних . Шифрування - це оборотне перетворення даних, з метою приховання інформації. Цей процес складається з двох частин : шифрування і розшифрування. Основним властивостями надійного шифру є його криптостійкість, довжина вхідних і вихідних даних має бути однакова.
1.2 Суть шифру Бекона
Френсіс Бекон - англійський письменник, природодослідник, філософ і політичний діяч. У постаті Бекона поєднуються філософ ,політичний діяч, вчений і письменник . Він став автором одного з відомих сьогодні шифрів для кодування тексту. Сам Бекон висунув головні вимоги до своїх шрифтів: «Вони не повинні піддаватися розшифруванню, не повинні вимагати багато часу для написання і читання, і не повинні порушувати ніяких підозр». Ці вимоги зберігаються і сьогодні. Він також запропонував оригінальну ідею захисту інформації, що спирається, по суті, на двійкове кодування букв алфавіту і використання у відкритому тексті двох шрифтів які мало відрізняються. Френсіс Бекон попереджав про можливі негативні наслідки помилок у використанні навіть вельми надійних шифрів. Він писав: «В результаті незручності і не майстерності тих рук, через які проходять найбільші секрети, ці секрети у багатьох випадках виявлялися наділеними слабшими шифрами» [6].Іншими словами, навіть сильний шифр в поганих руках не забезпечує надійного захисту секретів. Надійність шифру полягає не тільки в самому шифрі, але й у руках його користувача. Наступні століття підтвердили цю тезу. Навіть у XX столітті помилки у використанні шифрів зводили «нанівець» всі зусилля по захисту інформації. За справедливим зауваженням Д. Кана «Помилка шифрувальника часом є єдиною надією криптоаналітика».
Френсіс Бекон у своїй першій роботі 1580 запропонував двійковий спосіб кодування латинського алфавіту, за принципом аналогічний тому, що зараз використовується в комп'ютерах. Для кодування повідомлень Френсіс Бекон запропонував кожну букву тексту замінювати на групу з п'яти символів "A" або "B" (так як послідовністю з п'яти двійкових символів можна закодувати багато раз, що достатньо для шифрування 26 букв англійського алфавіту)[8] . За часів Френсіса Бекона англійський алфавіт складався з 24 букв: літери "I" і "J", а також "U" і "V" були попарно невідмітні і використовувалася одна замість іншого [3].
a aaaaa g bbbba n baabb t babba
b aaaab h bbbab o aabba u + v abbaa
c aaabb i + j bbabb p abbab w baaab
d aabbb k abbba q bbaba x aaaba
e abbbb l bbbaa r babab y aabab
f bbbbb m bbaab s ababb z ababa
Bаріант шифру Бекона, який використовує сучасний англійський алфавіт:
a aaaaa g bbbba m bbaab s ababb
y aabab b aaaab h bbbab n baabb
t babba z ababa c aaabb i bbabb
o aabba u abbaa d aabbb j babbb
p abbab v bbaaa e abbbb k abbba
q bbaba w baaab f bbbbb l bbbaa
r babab x aaaba
Отже, розглянувши цей розділ можна підсумувати загальну суть шифру Бекона. Бекон запропонував двійковий спосіб кодування латинського алфавіту , який полягав у заміні букв алфавіту на комбінацію з п'яти букв «а» і «в».
1.3 Особливості використання шифру, порівняльний аналіз з іншими шрифтами
Письменниця Елізабет Уелс Геллап протягом свого життя неодноразово досліджувала листи, знайдені у різних місцях написані Беконом. Сам Бекон говорив про те, якщо б хтось розшифрував його повідомлення, то на нього чекала б миттєва смерть. Шифр має певні особливості - довжина вихідних даних у 5 разів перевищує довжину вхідних даних , тому закодований текст займає великий розмір, а, отже, його важче передати , а правилами криптографії говориться, що у кожному хорошому шифрі довжина вхідних і вихідних даних однакова. Закодовані повідомлення можна легко розкодувати. Але і достоїнством шифру є те, що його можна закодувати декілька раз і цим самим підвищити криптостійкість шифру. На сьогоднішній день цей шифр є мало актуальним, оскільки займає багато розміру, а це особливо важливо оскільки від цього залежить швидкість передачі повідомлення вартість його зберігання і т.д.
Якщо зробити порівняння з іншим відомим шифром Атбаш то шифр Бекона має багато недостатків. Шифр Атбаш - стародавній шифр, що використовує техніку дзеркальної перестановки. В шифрі Атбаш перша буква алфавіту замінюється останньою , друга передостанньою і так далі, шифрування відбувається заміною букв відкритого тексту на симетричні ним букви того ж алфавіту, аналогічно виконується дешифрування. Вихідний текст займає такий самий розмір, як і вхідний , що робить його простим у використанні , хоча даний шифр має певні особливості, він має низьку криптостійкість і його запросто зламати маючи простий алфавіт в той час, коли у шифрі Бекона кожній букві ставиться у відповідність комбінація з п'яти символів і його розшифрувати можна лише маючи ключ.
Отже, якщо зробити порівняння цих двох шифрів, то можна дійти до висновку, що кожен з них має як і недоліки, так і переваги, але на сьогоднішній час їх майже не використовують через появу нових універсальних шифрів.
РОЗДІЛ II. СЕРЕДОВИЩЕ ПРОГРАМУВАННЯ С++ BUILDER
2.1 Короткий опис мови С++
Історія розроблення мови програмування C++ починається з мови С, тобто її побудовано на фундаменті та синтаксисі мови С. Мова C++ насправді є надбудовою мови С, тобто усі компілятори C++-програм можна використовувати для компілювання С-програм. Мову C++ можна назвати розширеною та поліпшеною версією мови С, у якій реалізовано технологію об'єктно-орієнтованого, узагальненого та процедурного програмування. Вона також містить ряд інших удосконалень мови С, наприклад, розширений набір бібліотечних функцій.[4]C++ розширення С - був розроблений Бьярном Страуструпом в лабораторії центра AT&T Bell Laboratories (Нью-Джерсі, США) у 1979 році. Початкова назва С була змінена на С++ у 1983 році. Оскільки С - стандартизована, апаратно-незалежна, широко доступна мова, програми, написані на С, часто можуть бути виконані з мінімальними модифікаціями або навіть без них на різних комп'ютерних системах. За останні роки у сфері програмного забезпечення відбувся ряд значних змін. С++ та інші схожі з ними мови програмування відносяться до категорії процедурних мов. Кожен оператор такої мови є вказівкою комп'ютеру виконати певну дію. Програміст створює перелік інструкцій, а комп'ютер виконує дії, що відповідають цим інструкціям.[1]
Мова С++ підтримує декілька основних парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної. Зараз мова С++ є одною з найбільш популярних мов програмування . На мові С++ написано більшість програм , ОС.
Вона має ряд особливостей:
-підтримка об'єктно-орієнтованого програмування через класи;
-підтримка узагальненого програмування через шаблони;
-доповнення до стандартної бібліотеки;
-додаткові типи даних;
-обробка винятків;
-простори імен;
-вбудовані функції;
-перевантаження операторів;
-перевантаження імен функцій;
-посилання і оператори управління вільно розподіленою пам'яттю.
Отже, мова С++ є одною з найбільш популярних і універсальних мов програмування . Мова С++ підтримує більшість парадигм програмування. На мові С++ написано багато програм , ОС.
2.2 Основні характеристики середовища програмування C++ Builder.
Borland C++ Builder 6 популярна програма для створення консольних програм і програм з візуальними компонентами. Програма на C + + складається з оголошень (змінних, констант, типів, класів, функцій) і описів функцій. Серед функцій завжди є головна - main для консольних додатків (працюють з WIN32) або WinMain для додатків Windows. Саме ця головна функція виконується після початку роботи програми. Зазвичай в C + + Builder ця функція дуже коротка і виконує тільки деякі підготовчі операції, необхідні для початку роботи. А далі, при об'єктно-орієнтованому підході робота додатка визначається подіями, що відбуваються і реакцією на них об'єктів.Як правило, програми будуються за модульним принципом і складаються з безлічі модулів. Принцип модульності дуже важливий для створення надійних і відносно легко модифікованих додатків. Чітке дотримання принципів модульності в поєднанні з принципом приховування інформації дозволяє всередині будь-якого модуля проводити якісь модифікації, не зачіпаючи при цьому інших модулів і головну програму[12]. У C + + Builder всі об'єкти компонентів розміщуються в об'єктах - формах. Для кожної форми, яку ви проектуєте у своєму додатку, C + + Builder створює окремий модуль. Саме в модулях і здійснюється програмування завдання. У обробниках подій об'єктів - форм і компонентів ви ставите всі свої алгоритми. В основному вони зводяться до обробки інформації, що міститься у властивостях одних об'єктів і завданні за результатами обробки властивостей інших об'єктів. При цьому ви постійно звертаєтеся до методів різних об'єктів. Згідно з принципами приховування інформації зазвичай текст модуля поділяють на заголовний файл інтерфейсу, який містить оголошення класів, функцій, змінних і т.п., і файл реалізації, в якому міститься опис функцій. Стандартне розширення файлів реалізації - срр. Стандартне розширення заголовних файлів - h. Після того, як програма написана, на її основі повинен бути створений виконуваний файл (модуль).Цей процес здійснюється в кілька етапів. Спочатку працює препроцесор, який перетворює вихідний текст. Препроцесор здійснює перетворення у відповідності зі спеціальними директивами препроцесора, які розміщуються в початковому тексті. Препроцесор може відповідно до цих директив включати тексти одних файлів в тексти інших, розгортати макроси - скорочені позначення різних виразів і виконувати безліч інших перетворень. Після закінчення роботи препроцесора починає працювати компілятор. Його завдання - перевести тексти модулів в машинний (об'єктний) код. У результаті для кожного вихідного файлу. срр створюється об'єктний файл, що має розширення. obj. Після закінчення роботи компілятора працює компонувальник, який об'єднує об'єктні файли в єдиний завантажувальний виконуваний модуль, що має розширення. ехе. Цей модуль можна запускати на виконання.
Запускається C++ Builder звичайним способом, але для кращого функціонування програму краще запускати від імені адміністратора .
Вид екрану після запуску C++ Builder (Рис. 1.1). На екрані з'являються п'ять вікон:
головне вікно -- C++builder 6;
вікно стартової форми -- Form1 ;
вікно редактора властивостей об'єктів -- Object Inspector ;
вікно проглядання списку об'єктів -- Object Treeview ;
вікно редактора коду -- Unitl.cpp .
Рис. 1.1. Вид екрану після запуску C++ Builder
1- головне вікно. У головному вікні знаходиться меню команд, панелі інструментів і палітра компонентів.
2 - вікно стартової форми -- Form1 . Представляє собою заготовку головного вікна додатка, що розробляється. І робота над новим проектом починається саме зі створення стартової форми, оскільки кожен додаток має хоча б одну форму, яка служить головним вікном. Стартова форма створюється шляхом зміни значень властивостей форми Form1 та додавання до форми необхідних компонентів (командних кнопок, позначок, полів введення текстової інформації тощо) з палітри компонентів.
Для розміщення компонента в формі необхідно вибрати в палітрі компонентів кнопку, що відповідає необхідному компоненту. Далі клацнути на формі. Компонент з'явиться на формі, причому його верхній лівий кут буде там, де знаходився курсор миші в момент кліка.[2]
3 - вікно редактора властивостей об'єктів -- Object Inspector. Призначене для редагування значень властивостей об'єктів. Поділене на дві вкладки: properties i events. У термінології візуального проектування об'єкти -- це діалогові вікна і елементи управління (поля введення і виводу, командні кнопки, перемикачі і ін.). Властивості об'єкту -- це характеристики, що визначають вигляд, положення і поведінку об'єкту.
Деякі властивості вкладки properties:
Caption - відповідає за назву форми .
Visible - видимість об'єкта. Тут все відносно просто - якщо воно true, об'єкт видно, якщо false - відповідно - немає.
Name - ім'я об'єкта. Не плутайте Name і Caption. Ім'я - це унікальний ідентифікатор об'єкта, за яким його можна знайти. Двох об'єктів з однаковим ім'ям існувати не може, а з однаковими назвами багато. Ім'я має складатися з англійських букв і не повинно містити пробілів. Напис ж може бути як завгодно підписаний.
Constraints - визначає межі розтягування об'єкта (як правило, застосовується тільки для форм).
Font - шрифт основного напису. Працює тільки при відключеному (встановленим у false) властивості ParentFont.Cursor - це властивість визначає, яким стає курсор миші при наведенні на об'єкт.
Подія еvents - це те, що відбувається під час роботи програми. Реакцією на подію має бути якась дія. У C + + Builder реакція на подію реалізується як функція обробки події. Таким чином, для того щоб програма виконувала деяку роботу у відповідь на дії користувача, програміст повинен написати функцію обробки відповідної події. Слід звернути увагу на те, що значну частину обробки подій бере на себе компонент. Тому програміст повинен розробляти функцію обробки події тільки в тому випадку, якщо реакція на подію відрізняється від стандартної або не визначена.[1]
Деякі властивості вкладки еvents:
OnClick - при клацанні кнопкою миші.
OnDb1Click-при подвійному натисканні кнопкою миші.
OnMouseDown-при натисканні кнопки миші вниз.
OnMouseUp-при відпуску кнопки миші.
OnMouseMove-при переміщенні миші.
OnKeyPress-при натисканні клавіші клавіатури.
On Paint-при появі вікна на екрані на початку роботи програми; під час роботи програми після появи вікна (або його частини), яку було закрито іншим вікном або згорнуто.
4 - вікно переглядання списку об'єктів -- Object Treeview. Містить ієрархічний список об'єктів, що є елементами проекту.Завдяки цьому вікну легко переключатися між елементами проекту , що значно спрощує роботу.
5 - вікно редактора коду -- Unitl.cpp . Розділене на дві частини, у правій частині набирається програмний код. Проте, навіть на початку роботи над новим проектом ця частина вікна редактора коду не порожня. Вона містить шаблон програми C++ Builder.Файли проекту.C++ Builder, як і інші сучасні компілятори, мислить в термінах проектів при створенні програм. Проект складається з одного чи кількох вихідних файлів, а також з цілого ряду додаткових файлів ресурсів. Результатом створення програми є виконуваний .exe-файл. Одже, проект C++ Builder - це набір файлів:
( .bpr ) файл опису проекту Builder.
( .cpp ) вихідний файл з кодом кожного модуля плюс один файл проекту.
( .dfm ) файл опису форми та всіх її компонентів.
( .h ) заголовний файл.
( .res ) компільований двійковий файл ресурсів.
( .obj ) двійковий об'єктний файл.
( .tds ) файл містить відладну інформацію (Turbo Debugger Symbol).
Файли з розширенням, що починається з тильди (~), є резервними копіями. Можна спокійно їх знищувати у будь-який час.
Всі файли, що створює C++ Builder для проекту, можна розділити на дві категорії: файли, на основі яких будується проект, та файли, що створюються під час компіляції та компоновки проекту. Перші п'ять типів файлів створюються після першого збереження проекту. Файли формату obj створюються при компіляції пакету. Отже, якщо ви вирішили перенести ваш проект на інший комп'ютер, вам необхідно буде переписати лише ті файли, які C++ Builder використовує для побудови додатка. Файли з розширеннями .cpp, .h, .dfm та .bpr складають мінімальний набір. Решту файлів C++ Builder створить заново під час побудови програми.
Отже, можна зробити висновок що Borland C++ Builder 6 популярна і універсальна програма яка значно полегшує написання програм на мові С++. Для того щоб працювати у середовищі Borland C++ Builder 6 потрібно мати основні знання з С++ і розуміти англійську мову.
2.3 Основні компоненти середовища програмування C++Builder,використані для реалізації алгоритму, та їх властивості
При написані програми «Шифр Бекона» було задіяно основні компоненти C++ Builder. Корткий опис деяких з них:
- Компонент Label. Призначений для виведення тексту на поверхню форми. Знаходиться в панелі інструментів Standart. Властивості компоненту визначають вигляд і розташування тексту. Властивості компоненту Label:
Name - ім'я компоненту. Використовується в програмі для доступу до компоненту і його властивостей.
Caption - текст, що відображається.
Left - відстань від лівої межі поля виводу до лівої межі форми.
Тор - відстань від верхньої межі поля виводу до верхньої межі форми.
Height - висота поля виводу.
Width - ширина поля виводу.
- Компонент Button є командною кнопкою. Знаходиться в панелі інструментів Standart . Властивості компоненту:
Name - ім'я компоненту. Використовується в програмі для доступу до компоненту і його властивостей.
Caption - текст на кнопці.
Left - відстань від лівої межі кнопки до лівої межі форми.
Тор - відстань від верхньої межі кнопки до верхньої межі форми.
Height - висота кнопки.
Width - ширина кнопки.
Enabled - ознака доступності кнопки. Якщо значення властивості рівне true, то кнопка доступна. Якщо значення властивості рівне false, то кнопка недоступна .
- Компонент BitBtn. Знаходиться в панелі інструментів Additional. Кнопка з графікою. Використовується для створення кнопок, на яких розташовано бітову графіку. Зображення на цій кнопці задається властивістю Glyph. Більшість зображень для кнопок використовує дві піктограми. Всі інші властивості BitBtn схожі з компонентом Button.
- Компонент Memo є елементом редагування тексту, який може складатися з декількох рядків. Знаходиться в панелі інструментів Standart. Властивості компоненту Memo:
Name - ім'я компоненту. Використовується для доступу до властивостей компоненту.
Text - текст, що знаходиться в полі Memo. Розглядається як єдине ціле.
Lines - масив рядків, відповідний вмісту поля. Доступ до рядка здійснюється по номеру. Рядки нумеруються з нуля.
Left - відстань від лівої межі поля до лівої межі форми.
Тор - відстань від верхньої межі поля до верхньої межі форми.
Height - висота поля.
Width - ширина поля.
- Компонент Mainmenu є головним меню програми. Знаходиться в панелі інструментів Standard. Значок компоненту Mainmenu можна помістити в будь-яке місце форми, оскільки під час роботи програми його не видно. Пункти меню з'являються у верхній частині форми в результаті налаштування компоненту. Для налаштування меню використовується редактор меню (Рис.3.1), який запускається подвійним клацанням лівою кнопкою миші на значку компоненту або шляхом вибору з контекстного меню компоненту команди Menu Designer . На початку роботи над новим меню, відразу після додавання компоненту до форми, у вікні редактора знаходиться один-єдиний прямокутник -- заготівка пункту меню. Щоб перетворити цю заготівку на меню, потрібно в полі Caption вікна Object Inspector ввести назву меню. Якщо перед якою-небудь буквою в назві меню ввести знак &, то під час роботи програми його можна буде активізувати шляхом натиснення комбінації клавіші <Alt> і клавіші, відповідної символу, перед яким стоїть знак &. У назві меню ця буква буде підкреслена. [14]
Рис.2.3.Редактор меню
Щоб додати в головне меню елемент, потрібно у вікні редактора меню вибрати останній (порожній) елемент меню і ввести назву нового пункту. Щоб додати в меню команду, потрібно вибрати той пункт меню, в який треба додати команду, перемістити покажчик активного елементу меню в кінець списку команд меню і ввести назву команди. Після того, як буде сформована структура меню, потрібно, використовуючи вікно Object Inspector виконати налаштування елементів меню (вибрати пункт меню, що настроюється, можна у вікні форми додатку або із списку об'єктів у верхній частині вікна Object Inspector ). Кожен елемент меню (пункти і команди) -- це об'єкт типу TmenuItem . Властивості об'єктів TmenuItem визначають вид меню під час роботи програми. Властивості об'єкту TmenuItem:
Action - задає так звану команду, яка буде виконуватися при виборі даного пунтка меню. Весь список команд міститься в компоненті ActionList.
Caption - текст пункту меню.
Enabled - визначає, чи доступний користувачеві даний пункт меню.
Hint - коротка підказка для користувача, що відображається в рядку стану.
Visible - визначає, чи видно користувачеві пункт меню.
.Компоненти вкладки Dialogs (Рис 3.2), дозволяють створювати діалоги з користувачем програми. Діалоги надають програмі гнучкість і дозволяють користувачеві маніпулювати об'єктами програми під час її роботи. Вкладка містить десять компонентів стандартних діалогів.
Рис 3.2. Компоненти вкладки Dialogs
Є такі різновиди діалогів:
OpenDialog (Діалог відкриття) - дозволяє створити в програмі діалог відкриття файлів. Має можливість встановлення фільтрів на ім'я і розширення файлів, що відкриваються.
SaveDialog (Діалог збереження) - створює в програмі діалог з можливістю вибору імені файлу для збереження. Зазвичай використовується в зв'язці з компонентом OpenDialog.
OpenPictureDialog (Діалог відкриття малюнка) - призначений для створення діалогів відкриття файлів з графічним зображенням. Відрізняється від компонента OpenDialog можливістю попереднього перегляду файлу зображення безпосередньо у вікні діалогу.
SavePictureDialog (Діалог збереження малюнка) - створює діалог збереження файлу з зображенням. Так само, як і OpenPictureDialog, має можливість попереднього перегляду файлу зображення безпосередньо у вікні діалогу.
FontDialog (Діалог вибору шрифту) - надає можливість створення діалогу для вибору шрифту тексту в програмі.
ColorDialog (Діалог вибору кольору) - призначений для створення діалогу, для вибору кольору з палітри кольорів Windows. Отриманий числовий параметр кольору після цього можна зрадити будь-якого компонента, що має властивість Color.
PrintDialog (Діалог вибору принтера) - дозволяє організувати в програмі діалог вибору пристрою друкування з числа встановлених на комп'ютері. Крім того, даний діалог дозволить задати число копій, вибрати або задати діапазон друкованих сторінок і т. п.
PrinterSetupDialog (Діалог установки принтера) - створює в програмі діалог налаштування параметрів друкувального пристрою, до числа яких відносяться вибір типу паперу, її орієнтація, параметри відображення графіки і т. д.
FindDialog (Діалог пошуку) - відкриває в програмі діалог пошуку тексту з можливістю налаштування параметрів пошуку.
Отже, при написанні програми були використані такі компоненти: компонент Label, компонентButton, компонентBitBtn, компонент Memo, компонент Mainmenu, компоненти вкладки Dialogs.
РОЗДІЛ III. ПРОГРАМНА РЕАЛІЗАЦІЯ ШИФРУ БЕКОНА КОДУВАННЯ ТЕКСТУ
3.1 Практичне використання шифру Бекона
В зв'язку з широким використанням загальнодоступних каналів обміну
інформацією (інтернет, телефонні лінії, телекомунікаційні канали) виникає завдання захисту інформації, що передається. Для захисту інформації, що передається через незахищені канали зв'язку, використовується шифрування інформації. Шифрування - дуже ефективний спосіб зберегти інформацію доступною тільки заздалегідь визначеному колу людей, включаючи автора даних, що захищаються. Причому зробити це можна особисто, і не важливо, де після цього зберігатиметься або пересилатиметься прихована інформація - шифрування забезпечить однакове обмеження доступу до інформації у будь-якій системі. Навіть за ситуації, коли інформація потрапить до інших людей вона втратить для інших людей цінність, оскільки представлятиме безглуздий набір символів з букв «А» і «В». Для того щоб розшифрувати інформацію знадобиться велика кількість часу, а програмно тестову інформацію можна зашифрувати і розшифрувати за декілька секунд. Оскільки в наш час широко розповсюджені крадіжки даних і персоналізація інформації, щоб бути повністю впевненими, що ваша інформація не піддасться небезпеці, користуйтеся програмами захисту, які пропонують шифрування даних. Програма «Шифр Бекона» створена з метою допомогти надійно захистити персональні дані . Перевагами програми над іншими є висока швидкість шифрування, відносна простота, зрозумілий інтерфейс, відсутність в ній розповсюджених помилок. Також надійність шифрування можна збільшити , шифруючи вихідних текст повторно , і в зворотному порядку аналогічно розкодовуючи , але в цьому є і недолік - при кожному повторному кодуванні довжина закодованих даних збільшуватиметься у 5 разів і вихідні дані будуть займати великий обсяг інформації. Наприклад, для зашифрування слова «mother» у відповідність букві «m» ставиться комбінація «bbaaba» , букві «o» - «abbab» , букві «t» - «babba» , букві «h» - «bbbab» , букві «e» - «abbbb» , букві «r» - «babab» , таким чином зашифроване слово буде таким «bbaabaabbababbabbbababbbbbabab».
Отже, розглянувши даний розділ, ми дійшли до висновку, що у випадку, коли інформація повинна бути відома тільки деякому колу людей, потрібно користуватися шифруванням інформації , і навіть якщо вона буде викрадена, нею не зможуть скористатися. Для зашифрування повідомлення вручну потрібно багато часу , а для розшифрування - набагато більше, тому практичніше використовувати відповідне програмне забезпечення.
3.2 Опис програмного продукту "Шифр Бекона"
Для експлуатації програми необхідний ПК з встановленою ОС від Windows 98 - до Windows 8th та наступними апаратними характеристиками:
- процесор з частотою не менше 1 ГГц;
- ОЗП, обсягом не менше 128 Мбайт;
- вільна пам'ять на жорсткому диску не менше 5 Мбайт;
- стандартні приводи зовнішніх запам'ятовуючих пристроїв;
- сумісні монітор та відеоадаптер.
Середою розробки був вибраний інструментарій C++ Builder. Програма складається з 4 основних полів, де вводяться і виводяться вихідні дані. Для зручності зроблено діалог, в якому можна вибрати відповідний файл з вхідними даними або ж написати їх самостійно у відповіднім полі. Вихідні дані можна надрукувати за допомогою принтера або ж зберегти у текстовий файл.
Для того, щоб користуватися програмою користувач повинен мати вихідні дані для зашифрування або розшифрування. У папці з проектом необхідно запустити виконавчий файл Project1.exe. Програма має зрозумілий інтерфейс (Мал. 2.5), і скористатися нею може навіть користувач, який не має досвіду роботи з ПК. Після запуску файлу ввести дані в перше поле (для зашифрування) або в третє поле (для розшифрування).Для того, щоб реалізувати завдання, поставлене у пункті 3.1, ми можемо скористатися програмою «Шифр Бекона» : вводимо слово «mother» у перше поле і нажимаємо кнопку «зашифрувати» , і у другому полі з'явиться закодований текст, який можна скопіювати і вставити у третє поле, і розшифрувати (Рис. 3.3).
Рис. 3.3.Інтерфейс програми з зашифрованими і розшифрованими даними
Реалізуючи завдання, поставлене у пункті 3.1, у програмі «Шифр Бекона» було витрачено 20 секунд часу, в той час, коли вручну на це було витрачено 5 хвилин.
Отже, розглянувши даний пункт, можна дійти до висновку, що програма «Шифр Бекона» має простий інтерфейс, робить швидкісне шифрування і розшифрування інформації , з програмою може працювати користувач, який має базові знання з роботою ПК, програма потребує мінімальних ресурсів і сумісна з усіма поколіннями ОС Windows.
ВИСНОВКИ ТА ПРОПОЗИЦІЇ
Використання комп'ютерних мереж, зокрема глобальної мережі Інтернет, за яким передаються великі обсяги інформації державного, військового, комерційного і приватного характеру, не допускає можливість доступу до неї сторонніх осіб. Поява нових потужних комп'ютерів, мережевих технологій і нейронних обчислень зробила великий внесок в сучасну криптологію. Зашифрувати і розшифрувати особисту інформацію можна за декілька секунд, при цьому можна використати сотні програм. В результаті проведених досліджень можливості ефективного використання методів криптографічного захисту інформації від несанкціонованого доступу можна зробити висновок, що в сучасних інформаційних системах для шифрування повідомлень, які передаються, використовують симетричні алгоритми шифрування, а асиметричні алгоритми, зважаючи на їх велику обчислювальну здатність, не використовують через складність. Опрацювавши велику кількість літератури, я дійшов висновку, що показником надійної криптографічних систем захисту інформації є:
-Зашифроване повідомлення повинно піддаватися читанню тільки при наявності ключа.
-Число операцій, необхідних для визначення використаного ключа шифрування за фрагментом шифрованого повідомлення і відповідного йому відкритого тексту, повинно бути не менше загального числа можливих ключів.
-Число операцій, необхідних для розшифровки інформації шляхом перебору різноманітних ключів, повинно мати строгу нижню оцінку і виходити за межі можливостей сучасних комп'ютерів (з урахуванням можливості використання мережевих обчислень).
- Знання алгоритму шифрування не повинно впливати на надійність захисту.
-Незначна зміна ключа повинна приводити до істотної зміни виду зашифрованого повідомлення навіть при використанні одного і того ж ключа.
-Структурні елементи алгоритму шифрування повинні бути незмінними.
-Додаткові біти, що вводяться в повідомлення в процесі шифрування, повинні бути повністю та надійно сховані в зашифрованому тексті.
-Довжина шифрованого тексту повинна бути рівною довжині вихідного тексту.
-Не повинно бути простих і легко встановлюваних залежністю між ключами, послідовно використовуються в процесі шифрування.
-Будь-який ключ із безлічі можливих повинен забезпечувати надійний захист інформації.
-Алгоритм повинен допускати як програмну, так і апаратну реалізацію, при цьому зміна довжини ключа не повинна призводити до якісного погіршення алгоритму шифрування.
Проаналізувавши ці правила, я дійшов до висновку, що даний алгоритм має певні особливості - довжина вихідних даних у 5 разів перевищує довжину вхідних даних , тому закодований текст займає великий розмір, а, отже, його важче передати , а правилами криптографії говориться, що у кожному хорошому шифрі довжина вхідних і вихідних даних однакова .Закодовані повідомлення можна легко розкодувати .Але і перевагою шифру є те, що його можна закодувати декілька раз і цим самим підвищити криптостійкість шифру . На сьогоднішній день цей шифр є мало актуальним, оскільки займає багато розміру, а це особливо важливо, оскільки від цього залежить швидкість передачі повідомлення, вартість його зберігання і т.д. Але для передачі невеликих повідомлень інформації досить зручно використовувати створену програму. Дана програма має досить простий інтерфейс та алгоритмічну структуру. Необхідно відмітити, що на даний час програма знаходиться на стадії розробки, і в майбутньому вона буде мати більше функцій. В нашій роботі також були проаналізовані питання відносно теоретичної основи побудови програм з простим інтерфейсом користувача в середовищі Borland C++ Builder, а також проблеми, які виникають при цьому .
Результат поставленої мети - програма, яка правильно шифрує і розшифровує текстову інформацію латинського алфавіту.
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
1.A.Я.Архангельский. Прoграммирование в С++ Builder 6. - M.: ЗАО “Издательство Бином”, 2003. - 1152 с.
2. A.Я.Архангельский. Решение типовых задач в С++ Builder 6. - M.: ЗАО “Издательство Бином”, 2003. - 520 с.
3. Бaричeв С.Г., Гoнчaрoв В.В., Сeрoв Р.Е. Оснoвы сoврeмeннoй криптографии. -- М.: Горячая линия -- Телеком, 2002. -- 175 с.
4. ВІСНИК КНУТД : наук.-практ. журн. / голов. ред. Грищенко І.М. - д.е.н., професор, член-кореспондент НАПН, заслужений працівник легкої промисловості України, голова ради, головний редактор, ректор Київського національного університету технологій та дизайну. - Щомісяч. - ISSN 1682-2366. 2008, №1 2011 р.
5. Гнєздoв Г.Г. Сучaсні мeтoди криптoгрaфічнoго зaхисту інфoрмaції. -К.-2002 .- 31 с.
6. Жeльникoв В. Кpиптoгpaфия от папиpуса до компьютеpа. -- М.: ABF, 1996. - 335 с
7. Ключевський Б.Ю. Захист інформації: комп'ютерна криптографія. -М.: Гротек, 1998. - 62 с.
8. .Рублінецький В.І. Введення в комп'ютерну криптологію. Харків: ОКО, 1997 - 125 с.
9. Чижухін Г.Н. Основи захисту інформації в обчислювальних системах і мережах ЕОМ.- Пенза, 2001 - 164 с.
10.Шнaйeр Б. Приклaднaя криптогрaфия. Прoтокoлы, алгoритмы, исхoдные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. -- М.: Триумф, 2002. -- 816 с.
11.Ящeнко B.B. и др. Bвeдeниe в криптографию.- МЦНМO: «ЧеРo», 1999. -272 с.
12.Все про C++ Builder : [Електронний ресурс]. URL: http://c2plus.org/. (Дата звернення: 06.05.2013).
13. Компоненты Dialog С++ Builder : [Електронний ресурс]. URL: shttp://radio-hobby.org/modules/instruction/page.php?id=510 .(Дата звернення: 18.05.2013). алгоритм кодування шифр бекон
14. Создание простейшего текстового редактора. Пост третий: [Електронний ресурс]. URL: /http://femils-pro.ru/2012/06/sozdanie-prosteyshego-textovogo-redactora-post-tretiy/ (Дата звернення: 18.05.2013).
15. Форум С++ Builder : [Електронний ресурс]. URL: http://www.cyberforum.ru/cpp-builder/. (Дата звернення: 09.05.2013).
Размещено на Allbest.ru
Подобные документы
Історія створення мови С#. Аналіз алгоритмів кодування даних. Розробка системи в середовищі Visual Studio 2008 Express. Схема шифрування алгоритму DES. Дослідження алгоритму RC2. Приклади хешів RIPEMD-160. Програмна реалізація основних процедур системи.
дипломная работа [1,7 M], добавлен 25.10.2012Проектування архітектури гри "Тетріс". Аналіз вимог до неї. Вивчення особливостей реалізації, кодування та тестування програми. Алгоритм побудови робочого поля. Вибір мови програмування. Розробка і налагодження тексту програми. Інструкції з експлуатації.
курсовая работа [460,9 K], добавлен 04.03.2014Характеристики методів стискання інформації. Дворівневе кодування, алгоритм Лемпеля-Зіва. Блок-схема алгоритму кодування. Вибір мови, середовища програмування. Опис інтерфейсу, тестування програми. Бібліотеки, які використовуються при написанні програми.
курсовая работа [728,9 K], добавлен 17.01.2014Практичне застосування систем кодування знакової та графічної інформації в електронних обчислювальних машинах. Позиційні системи числення. Представлення цілих і дійсних чисел. Машинні одиниці інформації. Основні системи кодування текстових даних.
практическая работа [489,5 K], добавлен 21.03.2012Імовірнисний підхід у теорії ощадливого кодування. Оцінка інформативності ознак та їх оптимальна градація. Застосування імовірнісних методів для підвищення ефективності ощадливого кодування відеоінформації. Ефективні алгоритми кодування інформації.
реферат [1,6 M], добавлен 29.06.2009Значимість двійкової системи числення для кодування інформації. Способи кодування і декодування інформації в комп'ютері. Відповідність десятковій, двійковій, вісімковій і шістнадцятковій систем числення. Двійкове кодування інформації, алфавіт цифр.
презентация [1,4 M], добавлен 30.09.2013Реалізація програми, яка буде забезпечувати шифрування і дешифрування будь-яких файлів по довільному алгоритму з використанням пароля. Можливість кодування та розкодування утиліти за простим алгоритмом Гамування, який базується на бітовій операції XOR.
лабораторная работа [15,1 K], добавлен 04.04.2011Характеристика дослідження методу введення обмежених обсягів текстової інформації в ЕОМ. Аналіз механізму розробки програми, що передбачає можливість запису текстової інформації до файлу, а також завантаження тексту з файлу. Порядок роботи з програмою.
курсовая работа [74,1 K], добавлен 05.02.2010Розробка програми реєстрації автомобілів для збереження та перегляду інформації про модель машини, рік її випуску, об'єм двигуна і витрати палива. Складання алгоритмів розв'язання поставленої задачі та написання тексту програми в середовищі Turbo Pascal.
курсовая работа [29,7 K], добавлен 13.10.2010Розробка та дослідження алгоритмів і програм кодування даних з виявленням помилок на основі циклічних CRC-кодів. Аналіз циклічних кодів. Розробка та тестування програмних модулів. Розрахунок економічних показників. Вирішення питань охорони праці.
дипломная работа [5,4 M], добавлен 22.06.2010