- •Анотація
- •Криптографія та шифрування
- •Що таке криптографія?
- •Історія криптографії
- •Що таке шифрування?
- •Термінологія
- •Етапи шифрування
- •Види шифрування
- •Висновки
- •Розробка алгоритму программи шифрування
- •Ціль алгоритму
- •Створення алгоритму з врахуванням цілі
- •Суть роботи алгоритму
- •Фактична реалізація алгоритму
- •Висновки
- •Формат bmp. Опис та специфікація
- •Початкові відомості
- •Структура файлу
- •Складнощі у використанні
- •Висновки
- •Засоби реалізації алгоритму і программи
- •Обрання мови програмування
- •Обрання допоміжних засобів (бібліотек)
- •Висновки
- •Висновки
- •Список літератури
- •Список сайтів
- •Плани щодо майбутнього програми
- •Додаток а. Текст програми
- •Додаток б. Опис бібліотеки easybmp
- •Додаток в. Застосування програми на практиці
Висновки
Можна сказати, що шифрування є одною із найголовніших частин сучасної криптографії і важливою частиною інформаційних та комп’ютерних систем, що вже глибоко увійшли у наше життя (Інтернет).
З іншого боку шифрування та криптографія взагалі є, хоча швидше стали, більш математичними науками, що з одного боку дає ширший простір для людей з математичним складом розуму, а з іншого – дозволяє «підключати» фантазію при створенні алгоритмів. Ці 2 фактори не є, що правда, вирішальними, проте у цій проектній роботі саме ці 2 фактори найбільше вплинули на алгоритм.
Розробка алгоритму программи шифрування
Ціль алгоритму
Взагалі-то алгоритми створюються з деякою метою. Алгоритм автора (тобто мій) не є виключенням. Його ціль – зашифрувати зображення так, щоб ніхто, крім людини, що має шифр та програму, жодна людини не мала змоги хоча б здогадатися, або і зовсім відновити зображення. Цей алгоритм є досить аматорським і тому не забезпечує реальний захист зображення, але все-таки людям, що не знають навіть звичайних основ захисту інформації і/або комп’ютерної грамотності (так звані «юзери»), відновити зображення буде досить проблемно, якщо і взагалі можливо. Це зумовлено тим, що цей алгоритм, як і будь-які інші алгоритми нормальної якості не є тривіальним, але якщо і видно, що алгоритм побудований на перемішуванні частин зображення, то за яким порядком вони перемішується не зрозуміло.
Створення алгоритму з врахуванням цілі
Як вже було сказано, алгоритм більше захищає від людей, що слабо розуміються у захисті інформації. Тому було вирішено:
Побудувати свій алгоритм на переміщеннях частин зображення (щоcm на кшталт пазлу), але при йому зробити ці частини певного розміру та форми.
Спосіб переміщення не має бути досить зрозумілим для користувача, бо тоді весь сенс алгоритму зійде на нівець.
Частини зображення не мають бути надто великими, як у пазлу, але і не надто маленькими, наче самі пікселі.
Форма має бути зручною для оптимального переміщення.
Алгоритм має будуватися на симетрії – для зручного переміщення частин.
Отже, переміщатися будуть квадратні масиви пікселів 10 на 10.
Суть роботи алгоритму
Наприклад у нас є зображення 7 на 7 пікселів:
1 |
8 |
15 |
22 |
29 |
36 |
43 |
2 |
9 |
16 |
23 |
30 |
37 |
44 |
3 |
10 |
17 |
24 |
31 |
38 |
45 |
4 |
11 |
18 |
25 |
32 |
39 |
46 |
5 |
12 |
19 |
26 |
33 |
40 |
47 |
6 |
13 |
20 |
27 |
34 |
41 |
48 |
7 |
14 |
21 |
28 |
35 |
42 |
49 |
Ми їх групуємо у квадрати 2 на 2 піклеля зверху вниз і зліва на право:
І |
IV |
VII |
43 |
|||
44 |
||||||
ІІ |
V |
VIII |
45 |
|||
46 |
||||||
ІІІ |
VI |
IX |
47 |
|||
48 |
||||||
7 |
14 |
21 |
28 |
35 |
42 |
49 |
Чому ми виділили крайні пікселі: справа у тому, що ці крайні пікселі не можуть утворити квадрати, тому їх переміщення є проблемо, а вирішенням є не переміщення цих пікселі, тому якщо виразити цей підхід псевдокодом4, то переміщувані пікселі це пікселі від [номер_стрічки][1]5 до
[номер_стрічки][ширина_зображення - ширина_зображення mod6 ширина_квадрата] і від [1][номер_стовбчика] до [висота_зображення - висота_зображення mod висота_квадрата][1].
Далі ми переміщаємо квадрати симетрично до горизонтальної центральної вісі (квадрати II, V, VIII):
ІII |
IV |
IX |
43 |
|||
44 |
||||||
ІІ |
V |
VIII |
45 |
|||
46 |
||||||
I |
VI |
VII |
47 |
|||
48 |
||||||
7 |
14 |
21 |
28 |
35 |
42 |
49 |
Квадрати центральної вісі (II, V, VIII) не переміщаються тому, що їх нікуди переміщати (ні з ким міняти). Але якщо б буде щось на кшталт цього:
І |
ІІ |
III |
IV |
То при переміщенні квадратів центральна вісь буде на межі II і III, і квадратів, що не будуть переміщатися не буде:
ІV |
ІІI |
II |
I |
Щоб «заплутати» очі людини, що бачить зашифроване зображення парні стовпчики шифруватись не будуть!
Тобто стовпчик 2 шифруватись не буде:
IV |
V |
VI |
Далі буде виконуватись перемішування по вертикалі, реалізація та ж, що і у перемішуванні по горизонталі:
III |
IV |
IX |
43 |
|||
44 |
||||||
ІІ |
V |
VIII |
45 |
|||
46 |
||||||
I |
VI |
VII |
47 |
|||
48 |
||||||
7 |
14 |
21 |
28 |
35 |
42 |
49 |
IX |
IV |
III |
43 |
|||
44 |
||||||
ІІ |
V |
VIII |
45 |
|||
46 |
||||||
VII |
VI |
I |
47 |
|||
48 |
||||||
7 |
14 |
21 |
28 |
35 |
42 |
49 |
Отже, я гадаю, що алгоритм шифрування досить зрозумілий.