Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Шифрування тексту шифр Плейфера





 

Шифр Плейфера або квадрат Плейфера – ручна симетрична техніка шифрування, в якій вперше використана заміна Біграмма. Винайдена в 1854 році Чарльзом Уітстоном, але названа ім'ям Лорда Ліона Плейфера, який впровадив даний шифр в державні служби Великобританії. Шифр передбачає шифрування пар символів (Біграмм) замість одиничних символів, як у шифрі підстановки і в більш складних системах шифрування Віженера. Таким чином, шифр Плейфера більш стійкий до злому в порівнянні з шифром простої заміни, так як ускладнюється частотний аналіз. Він може бути проведений, але не для 26 можливих символів (латинський алфавіт), а для 26х26 = 676 можливих біграм. Аналіз частоти Біграмма можливий, але є значно більш важким і вимагає набагато більшого обсягу зашифрованого тексту.
Незважаючи на те, що шифр був винаходом Уітстона, він став відомий як шифр Плейфера. Перший опис шифру Плейфера було зареєстровано в документі, підписаному Уітстоном 26 березня 1854. Міністерство закордонних справ Великобританії відхилив цей документ через складність його сприйняття. Коли Уітстон запропонував продемонструвати, що три з чотирьох хлопчиків у сусідній школі навчаться використовувати цей шифр за п'ятнадцять хвилин, заступник міністра закордонних справ відповів: «Це дуже можливо, але ви ніколи не навчили б цьому аташе.»

Цей шифр використовувався в тактичних цілях британськими збройними силами у Другій Англо-Бурській війні і в Першій світовій війні, а також австралійцями і німцями під час Другої світової війни. Причиною використання шифру Плейфера було те, що він досить швидкий у застосуванні і не вимагає ніякого спеціального обладнання. Основною метою використання цієї системи шифрування був захист важливої, але не секретної інформації під час ведення бою. До того часу, коли ворожі криптоаналітики зламували повідомлення, інформація вже була некорисна для них.

Використання шифру Плейфера в даний час є недоцільним, тому що сучасні переносні комп'ютери можуть легко зламати шифр протягом декількох секунд. Першим виданий алгоритм злому шифру Плейфера був описаний в 1914 році в брошурі обсягом 19 сторінок лейтенантом Джозефом О. Моуборном.

Шифр Плейфера використовує матрицю 5х5 (для латинського алфавіту, для кириличного алфавіту необхідно збільшити розмір матриці до 4х8), що містить ключове слово або фразу. Для створення матриці і використання шифру досить запам'ятати ключове слово і чотири простих правила. Щоб скласти ключову матрицю, в першу чергу потрібно заповнити порожні клітинки матриці буквами ключового слова (без запису повторюваних символів), потім заповнити решту осередки матриці символами алфавіту, що не зустрічаються в ключовому слові, по порядку (в англійських текстах зазвичай опускається символ «Q», щоб зменшити алфавіт, в інших версіях «I» і «J» об'єднуються в одну клітинку). Ключове слово може бути записано у верхньому рядку матриці зліва направо, або по спіралі з лівого верхнього кута до центру. Ключове слово, доповнене алфавітом, становить матрицю 5х5 і є ключем шифру.

Для того щоб зашифрувати повідомлення, необхідно розбити його на Біграмми (групи з двох символів), наприклад «Hello World» стає «HE LL OW OR LD», і відшукати ці Біграмми в таблиці. Два символи Біграмма відповідають кутам прямокутника в ключовий матриці.Далі, визначаємо положення кутів цього прямокутника відносно один одного. Потім, керуючись такими 4 правилами, зашифровуємо пари символів вихідного тексту:

1. Якщо два символи Біграмма збігаються (або якщо залишився один символ), додаємо після першого символу «Х», зашифровувати нову пару символів і продовжуємо. У деяких варіантах шифру Плейфера замість «Х» використовується «Q».

2. Якщо символи Біграмма и вихідного тексту зустрічаються в одному рядку, то ці символи заміщаються на символи, розташовані в найближчих стовпцях праворуч від відповідних символів. Якщо символ є останнім у рядку, то він замінюється на перший символ цього ж рядка.

3. Якщо символи Біграмма и вихідного тексту зустрічаються в одному стовпці, то вони перетворюються на символи того ж стовпця, що знаходяться безпосередньо під ними. Якщо символ є нижнім в стовпці, то він замінюється на перший символ цього ж стовпця.

4. Якщо символи Біграмма и вихідного тексту знаходяться в різних стовпцях і різних рядках, то вони замінюються на символи, що знаходяться в тих же рядках, але відповідні іншим кутах прямокутника.

Для розшифровки необхідно використовувати інверсію цих чотирьох правил, відкидаючи символи «Х» (або «Q»), якщо вони не несуть сенсу у вихідному повідомленні.

Використовуємо ключ «playfair example», тоді матриця прийме вигляд:

P L A Y F
I R E X M
B C D G H
J K N O S
T U V W Z

Зашифруємо повідомлення «Hide the gold in the tree stump»
HI DE TH EG OL DI NT HE TR EX ES TU MP
1. Біграмма HI формує прямокутник, замінюємо її на BM.
2. Біграмма DE розташований в одному стовпці, замінюємо її на ND.
3. Біграмма TH формує прямокутник, замінюємо її на ZB.
4. Біграмма EG формує прямокутник, замінюємо її на XD.
5. Біграмма OL формує прямокутник, замінюємо її на KY.
6. Біграмма DI формує прямокутник, замінюємо її на BE.
7. Біграмма NT формує прямокутник, замінюємо її на JV.
8. Біграмма HE формує прямокутник, замінюємо її на DM.
9. Біграмма TR формує прямокутник, замінюємо її на UI.
10. Біграмма EX знаходиться в одному рядку, замінюємо її на XM.
11. Біграмма ES формує прямокутник, замінюємо її на MN.
12. Біграмма TU знаходиться в одному рядку, замінюємо її на UV.
13. Біграмма MP формує прямокутник, замінюємо її на IF.

Отримуємо зашифрований текст «BM ND ZB XD KY BE JV DM UI XM MN UV IF»
Таким чином повідомлення «Hide the gold in the tree stump» перетвориться в «BMNDZBXDKYBEJVDMUIXMMNUVIF»
Припустимо, що необхідно зашифрувати Біграмми у OR. Розглянемо 4 випадки:
1)*****
*OYRZ
*****
*****
*****
OR замінюється на YZ
2)**O**
**B**
*****
**R**
**Y**
OR замінюється на BY
3)Z**O*
*****
*****
R**X*
*****
OR замінюється на ZX
4)*****
*****
YOZ*R
*****
*****
OR замінюється на ZY
Криптоаналіз шифру Плейфера
Як і більшість шифрів формальної криптографії, шифр Плейфера також може бути легко зламаний, якщо є достатній обсяг тексту. Отримання ключа є відносно простим, якщо відомі шифрований і звичайний текст. Коли відомий тільки зашифрований текст, криптоаналітики аналізують відповідність між частотою появи Біграма в зашифрованому тексті і відомій частоті появи Біграма в мові, на якій написано повідомлення.

Шифр Плейфера подібний шифру двох квадратів, хоча відносна простота системи шифрування Плейфера спрощує ідентифікацію тексту. Примітно, що Біграмма шифру Плейфера та її інверсія (AB і BA) буде розшифрована як інша Біграмма та її інверсія (RE і ER). В англійській мові є багато слів, які містять такі інверсні Біграмми, наприклад REceivER і DEpartED. Ідентифікація близько лежачих інверсних Біграмм зашифрованого тексту і знаходження їм відповідностей в списку відомих слів вихідного тексту є одним з легких способів побудови вихідного тексту і почала конструювання ключа.

Існує інший підхід до криптоанализу шифру Плейфера, який називається Random-restart hill climbing. Він грунтується на матриці випадкових символів. За допомогою найпростіших ітерацій матриця випадкових символів максимально наближається до оригінальної матриці. Очевидно, що цей метод дуже складний для людини, але комп'ютери за допомогою даного алгоритму можуть зламати даний шифр, навіть маючи невеликий обсяг тексту. Іншою відмінною особливістю шифру Плейфера від шифру з двома квадратами є те, що в ньому ніколи не зустрічаються Біграмми і з повторюваними символами (наприклад ЇЇ). Якщо в зашифрованому тексті відсутні Біграмми і з повторюваними символами і його довжина досить велика, то можна припустити, що вихідний текст зашифрований шифром Плейфера.

У главі 7 книги «Solution to polygrafic substitution systems» на сайті Field Manual 34-40-2 Сухопутних Військ США, можна знайти керівництво для знаходження ключа для шифру Плейфера. Детальний криптоаналіз шифру Плейфера згадується в главі 28 новели «Розшукується труп» (автор - Дороті Сейер). У цьому творі показано, що шифр Плейфера є криптографічно слабким, тому що детектив знайшов ключ до повідомлення досить швидко. Книга Сейер включає детальний опис механізму шифрування методом Плейфера, а також і покрокове керівництво для його криптоаналізу. Німецька армія, ВПС і поліція використовували подвійну систему шифрування Плейфера, як шифр «середнього гатунку», у Другій світовій війні. Вони додали другий квадрат, так як під час Першої світової війни шифр Плейфера був зламаний. З цього квадрата брали другий символ кожної Біграмми, не використовуючи ключове слово поміщаючи символи в довільному порядку. Але і цей шифр був зламаний в Блечлі-парк, бо німці використовували один і той же шаблон повідомлення. У восьми повідомленнях, зашифрованих подвійним шифром Плейфера, були використані цифри від одного до дванадцяти, це і дало можливість досить легко зламати його.

Отже шифр Пейфера є достатньо складним шифром, проте з розвитком технологій він став ненадійним.

Порівняння: шифр Атбаш на відміну від шифру Плейфера є більш простішим і потребує менше часу для дешифрування тексту, а отже він є менш надійним ніж шифр Плейфера.


 

РОЗДІЛ II. СЕРЕДОВИЩЕ ПРОГРАМУВАННЯ C++ BUILDER

 

2.1. Основні характеристики середовища програмування C++ Builder 6

Кожна програма повинна мати зручний інтерфейс для спілкування з користувачем. Основним елементом інтерфейсу у Windows є вікна. Одним з різновидів вікон є форма, яка може містити кнопки, текстові поля, перемикачі тощо.

Тому програми, написані для використання у Windows, зазвичай мають інтер

фейс, подібний до вікон та форм. Для швидкого і зручного створювання про-

грам з графічним інтерфейсом використовують спеціальні середовища візуаль-

ного програмування. Майже кожна сучасна мова програмування має принаймні

одне таке середовище: Object Pascal – Borland Delphi, Basic – Visual Basic, C++ –

Borland C++ Builder, Microsoft Visual C. Візуальне програмування ще називають

Rapid Application Development (RAD), “швидка розробка додатків”. Технологія

RAD суттєво прискорює створення програм з графічним інтерфейсом.

Інструментальна система Builder, подібно до інших систем візуального програмування (Visual C, Visual Basic, Delphi тощо), насамперед є посередником поміж інтерфейсом прикладного програмування Windows (API – Application Program Interface) та програмістом, надаючи змогу навіть програмістам початківцям оперативно створювати програмні проекти, які матимуть графічний інтерфейс користувача (GUI – Graphic User Interface) найрізноманітнішої спрямованості, від суто обчислювальних і логічних до графічних і мультимедійних.

C++ Builder – це технологія візуального програмування, де автоматизовано її трудомістку частину і створювання інтерфейсних програм з діалоговими вікнами. Оболонка C++ Builder надає змогу замість повного самостійного написання програми використовувати великий набір готових візуальних об’єктів,так званих компонентів, піктограми яких розміщені на відповідних вкладках палітри компонентів. В С++ Builder існує понад 100 компонентів. Всі компоненти зібрано у бібліотеці візуальних компонентів VCL – Visual Class Library.

С++ Builder призначено для написання програм мовою програмування C++ і поєднує VCL та середовище програмування (IDE – Integrated Development Environment), написані на Delphi з компілятором C++. Цикл створення програмних проектів у C++ Builder є аналогічний до Delphi, але із суттєвими поліпшеннями. Більшість компонентів, розроблених у Delphi, можна використовувати і в C++ Builder без модифікації, але, на жаль, зворотне твердження не слушне. С++ Builder дозволяє методом drag-and-drop доволі просто розробляти інтерфейсні програми, що зумовлює підвищення ефективності та простоту програмування, оскільки програмістові не треба кожного разу створювати ті елементи власних програм, котрі може бути реалізовано за допомогою вже існуючих об’єктів.

Основним будівельним об’єктом візуального програмування є компонент.

Компонентами в C++ Builder є об’єкти чи класи об’єктів, які є, у певному ро-

зумінні, об’єктами “реального світу”. Їх безпосередньо видно на екрані (за ви-

нятком групи невидимих компонентів), їх можна пересувати мишею, вони мо-

жуть реагувати на клацання клавіш клавіатури і миші тощо. Своєю чергою,компонентам, на відміну від звичайних об’єктів C++, притаманна наявність властивостей, подій та методів, які дозволяють здійснювати різноманітні операції з цими компонентами.

Властивості (Properties) дозволяють легко встановлювати різні характе-

ристики компонентів, такі як назва, розміри, контекстні підказки чи джерела даних. Методи (функції-члени) виконують певні операції над компонентним об’єктом, у тому числі й такі складні, як відтворювання чи перемотування пристрою мультимедіа. Події (Events) пов’язують зовнішні впливи, на які реагують компоненти, такі як активізація, натиснення кнопок чи редаговане введення – з кодами реакції на ці впливи. Окрім того, події можуть виникати за таких специфічних змінювань стану компонента, як поновлення даних в інтерфейсних елементах доступу до баз даних.

За приклад об’єкта розглянемо компонент Button, який за суттю є кноп-

кою і має низку властивостей: ім’я, розміри (довжина й висота) і розташування

на формі, окреслення меж, надпис на кнопці, шрифт, стиль, розмір та колір надпису, видимість (кнопка може існувати, але бути невидимою) тощо. Для кнопки можна створювати різні події, наприклад: клацання кнопкою миші, натискання клавіші клавіатури тощо. Методами для кнопки можуть бути алгоритми, які виконують такі дії: переміщення самої кнопки, змінювання розмірів, створення нової чи знищення існуючої кнопки тощо.

Програмування в С++ Builder складається з двох етапів:

1. конструювання візуального інтерфейсу за допомогою компонентів;

2. написання програмного коду, виконання команд якого забезпечить

розв’язок певної задачі.

Вікно середовища C++ Builder при завантаженні складається з таких елементів:

1. вікно форми;

2. вікно коду програми;

3. головне меню;

4. “гарячі” кнопки інструментальних панелей;

5. палітра компонентів;

6. вікно інспектора об’єктів.

 

Рис. 2.1. Стартове вікно програми

 

Основні компоненти середовища програмування C++ Builder 6 та їх властивості

Вікно форми займає найбільше місце і є прямокутним сірим “контейнером”, на який при проектуванні форми розміщують компоненти (кнопки, надписи, панелі, вікна редакторів тощо). Форма сама є компонентом з назвою Form. Без додаткових вказівок заголовок компонента (властивість Caption) збігається з його назвою (властивість Name), до якої додається порядковий номер, розпочинаючи з 1 (приміром Button1, Button2). Але заголовок змінити за допомогою властивості Caption. Розміри форми також можна змінювати чи то за допомогою вікна Object Inspector, чи просто “зачепивши” мишкою за лінію межі форми (цього моменту курсор набуває вигляду двонапрямленої стрілки). Для розміщених на формі компонентів можна викликати контекстну довідку, для чого слід виокремити потрібний компонент і натиснути клавішу <F1>. Якщо клацнути на самій формі і натиснути клавішу <F1>, відкриється довідка по класу форми TForm.

 

Рис. 2.2. Компонент Form

 

При використанні даного елемента я використовував наступні властивості:

1. BorderStyle - визначає загальний вигляд вікна і операції зним, які дозволяється виконувати користувачу;

2. Caption - являє собою текст заголовка елемента. А також я використовував цю властивість в наступних елементах: Label, Edit, Button;

3. Font є об'єктом типу TFont. Зміна шрифту можна здійснити або створенням нового об'єкта типу TFont, або зміною властивостей Color, Height, Name, Pitch, Size, Style існуючого об'єкта. А також, я використовував цю властивість в наступних елементах: Button, Label, Edit, UpDown, StringGrid, Form;

4. Left - визначає координату лівого краю компонента у точках. Для компонентів за початок відліку береться відстань від лівого краю форми до лівої межі компоненту (наприклад, панелі, якщо даний компонент розташований на панелі, або форми, якщо компонент розташований безпосередньо на формі). А також я використовував цю властивість в наступних елементах: BitBtn, Label, Edit, StringGrid, UpDown,TChart;

5. Width - визначає горизонтальний розмір компонента чи форми у точках. Використовується для зміни ширини компонента при змінах розмірів вікна програми. А також я використовував цю властивість в наступних елементах: BitBtn, Label, Edit, StringGrid, UpDown,TChart;

Button - це візуальний елемент “кнопка” за допомогою якого виконується подія. Щоб додати компонент “Button” потрібно вибрати в палітрі інструментів вкладку “Additional” і натиснути правою кнопкою мишки на елементі “Button” і натиснути цією кнопкою мишки на “Form” де має бути розміщений компонент.

 

Рис. 2.3. Компонент Button

 

При використанні даного елемента я використовував наступні властивості:

· Caption;

· Font;

Label - мітка. Використовується, в основному, для підпису інших компонентів. Наприклад, для назви введеної величини в Edit. Щоб додати компонент “Label” потрібно вибрати в палітрі інструментів вкладку “Standart” і натиснути правою кнопкою мишки на елементі “Label” і натиснути цією кнопкою мишки на Form де має бути розміщений компонент.

 

Рис. 2.4. Компонент Label

 

При використанні даного елемента я використовував наступні властивості:

· Caption;

· Font;

· Visible;

· Left;

· Enabled;

· Width.

Edit - компонент призначений для вводу інформації, а також можна ним і виводити інформацію. Щоб додати компонент “ Edit ” потрібно вибрати в палітрі інструментів вкладку “Standard” і натиснути правою кнопкою мишки на елементі “ Edit ” і натиснути цією кнопкою мишки на Form де має бути розміщений компонент.

 

Рис. 2.5. Компонент Edit

 

При використанні даного елемента я використовував наступні властивості:

· Caption;

· Font;

· Visible;

· Width;

· Height;

· Enabled;

· MaxLength – дозволяє обмежувати кількість символів які були введені в поле Edit;

· Text - текст, який знаходиться в полі вводу/редагування.

OpenDialog - Виклик діалогового вікна Windows “Відкрити файл”. Властивість FileName зберігає ім‟я файла, а властивість InitialDir – обраний шлях до теки з файлом

 

Рис. 2.6 Компонент OpenDialog

Memo - Багаторядкове текстове вікно для відображення, введення чи виведення тексту та значень даних програми; текст зберігається у властивості Lines

 

Рис. 2.6 Компонент Memo

ProgresBar - Прямокутний індикатор, який зафарбовується зліва направо заданим кольором у міру виконування певного процесу в програмі.Властивості Min та Мах задають інтервал значень індикатора. Властивість Step задає крок змінювання значень позиції індикатора (властивість Position)

 

Рис. 2.7 Компонент ProgressBar

TabControl - Сторінки із закладками, котрі може обирати користувач. Кількість закладок і надписи на них задаються властивістю Tabs. Автоматичне оновлення вмісту сторінок при перемиканні не відбувається, тому програміст має робити це самостійно

Рис. 2.8 Компонент TabControl

RadioButton - Кругла кнопка з двома станами і текстом опису, який специфікує її призначення. Радіокнопки – набір взаємовиключних варіантів вибору: лише одна кнопка може бути обрана на даний момент часу (позначається внутрішнім чорним кружечком), а з попередньо обраної кнопки вибір автоматично знімається. При натисканні радіокнопки властивість Checked змінюється

і виникає подія OnClick.

 

Рис. 2.9 Компонент RadioButton

RadioGroup- Є комбінацією групового вікна GroupBox і групи залежних радіокнопок RadioButton. Лише одну кнопку з групи може бути обрано. Перелік кнопок задається властивістю Items. Значення властивості Itemlndex зумовлює, яку саме радіокнопку обрано на цей момент. Можна групувати радіокнопки

у кілька стовпчиків за допомогою властивості Columns

 

Рис. 2.10 Компонент RadioGroup

Date: 2015-07-24; view: 1284; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию