- •Анотація
- •Криптографія та шифрування
- •Що таке криптографія?
- •Історія криптографії
- •Що таке шифрування?
- •Термінологія
- •Етапи шифрування
- •Види шифрування
- •Висновки
- •Розробка алгоритму программи шифрування
- •Ціль алгоритму
- •Створення алгоритму з врахуванням цілі
- •Суть роботи алгоритму
- •Фактична реалізація алгоритму
- •Висновки
- •Формат bmp. Опис та специфікація
- •Початкові відомості
- •Структура файлу
- •Складнощі у використанні
- •Висновки
- •Засоби реалізації алгоритму і программи
- •Обрання мови програмування
- •Обрання допоміжних засобів (бібліотек)
- •Висновки
- •Висновки
- •Список літератури
- •Список сайтів
- •Плани щодо майбутнього програми
- •Додаток а. Текст програми
- •Додаток б. Опис бібліотеки easybmp
- •Додаток в. Застосування програми на практиці
Висновки
Структура BMP докладно розглянута і показана у зображенні BMPfileFormat.png. А ми для уникнення складнощів у використанні будемо використовувати бібліотеку EasyBMP.
Засоби реалізації алгоритму і программи
Обрання мови програмування
Обрання мови програмування для реалізації алгоритму шифрування зображень не є справою з легких. Треба враховувати декілька факторів:
Треба враховувати захищеність мови програмування від декомпіляції – тобто для цього підходять здебільшого мови середнього та низького рівня.
Треба враховувати швидкодію мови програмування.
Треба враховувати зручність мови програмування для програміста, адже можна написати програму шифрування і на мові асемблера, який задовольняє 2 попередні вимоги.
І найголовніший фактор – писати програму треба на мові, яку програміст знає.
Отже:
Інтерпретовані мови програмування не підходять – дуже висока можливість повної декомпіляції, яка у C# доходить до того, що програму можна декомпілювати аж до збереження імен змінних та функцій. Рішення: Assembler, C, C++ і всі неінтерпретовані мови.
Рішення: аналогічно до попереднього, але без Delphi з його синтаксисом Pascal10.
Тут би підійшли саме C-подібні інтерпретовані мови як от Java та C#, але непогані фреймворки11 є також і на C/C++.
Рішення: Delphi, C, C++.
Мову C ми відкидаємо, бо автор знає її гірше ніж C++, Delphi ми відкинули по зрозумілим причинам. Залишається лише C++ на якій автор і реалізував даний алгоритм.
Обрання допоміжних засобів (бібліотек)
Графічний інтерфейс було вирішено відкласти на потім (щоб не «засмічувати» програму непотрібними для реалізації алгоритму бібліотеками передчасно). Більшість популярних бібліотек для роботи з зображеннями є складними і надлишковими. Отож потрібно було знайти просту бібліотеку. Під цей критерій підпадали 2 бібліотеки: CImg та EasyBMP. CImg була «забракована» через досить погану документацію, а от EasyBMP навпаки має досить гарну документацію та гарні відгуки програмістів. До того ж вона з відкритим вихідним кодом та кроссплатформена.
Зупинятись на її описі я не буду але процитую Б. Кернігана і Д. Рітчі12: «Якщо функція написана правильно, то немає потреби знати, як вона працює; достатньо знати, що саме вона робить.» А правильність написання своїх функцій бібліотека EasyBMP вже не раз довела.
Вибір IDE
Вибір IDE13 дуже важливий при розробці великих програм, а для програми, яка складається одного файлу вихідного коду (близько 125 стрічок коду) та бібліотеки, що не модифікувалась, IDE і не потрібна. Автору вистачило текстового редактора з підсвіткою синтаксису (Notepad++), інтерфейсу командного рядка з Windows 7 (cmd) та компілятора g++ з пакету MinGW. Але зважаючи на заслугу Dev-C++ 4.2.2.9 у написанні інших програм автора вона була включена у цей проект як основна IDE.
Висновки
Для реалізації цього проекту було обрано мову програмування C++ із застосуванням бібліотеки EasyBMP. В якості допоміжних засобів: текстовий редактор з підсвіткою синтаксису Notepad++ та компілятор g++ з пакету MinGW. Але для зручності було реалізовано 2 програми: одна для шифрування, друга – розшифрування.