- •Анотація
- •Криптографія та шифрування
- •Що таке криптографія?
- •Історія криптографії
- •Що таке шифрування?
- •Термінологія
- •Етапи шифрування
- •Види шифрування
- •Висновки
- •Розробка алгоритму программи шифрування
- •Ціль алгоритму
- •Створення алгоритму з врахуванням цілі
- •Суть роботи алгоритму
- •Фактична реалізація алгоритму
- •Висновки
- •Формат bmp. Опис та специфікація
- •Початкові відомості
- •Структура файлу
- •Складнощі у використанні
- •Висновки
- •Засоби реалізації алгоритму і программи
- •Обрання мови програмування
- •Обрання допоміжних засобів (бібліотек)
- •Висновки
- •Висновки
- •Список літератури
- •Список сайтів
- •Плани щодо майбутнього програми
- •Додаток а. Текст програми
- •Додаток б. Опис бібліотеки easybmp
- •Додаток в. Застосування програми на практиці
Фактична реалізація алгоритму
Фактично весь алгоритм є 2 блоками з 4 вкладених циклів: перший блок відповідає за шифрування по вертикалі, а другий – по горизонталі. Бо обидва блоки можна узагальнити однією формулою, бо шифрування по горизонталі можна представити як шифрування по вертикалі, де ширина – це висота оригінального зображення, а висота – зрозуміло, ширина оригінального зображення.
Отже приступимо7:
Нехай:
const Середина = (Висота - Висота mod Розмір_Квадрата) / 2 –
– ((Висота - Висота % Розмір_Квадрата) / 2) mod Розмір_Квадрата
const Кінець_ширини = Ширина – Ширина mod Розмір_Квадрата – Розмір_Квадрата
Варто зазначити, що при кодуванні по горизонталі замість Висота потрібно поставити Ширина і, звичайно, навпаки.
Формули, що вираховують const Середина і const Кінець встановлені експериментально.
const Кінець – це не власне кінець зображення, а крайня межа пікселів, що шифруються – Розмір_Квадрата.
в – тимчасова висота.
ш – тимчасова ширина.
Отже:
1|Від в := 0 поки в < Середина, в := в + Розмір_Квадрата;
2| Від ш := 0 поки ш < Кінець, в := в + Розмір_Квадрата * 2;
3| Від зміщення_по_висоті := 0 поки зміщення_по_висоті < 10,
4| зміщення_по_висоті = зміщення_по_висоті + 1;
5| Від зміщення_по_ширині := 0 поки зміщення_по_висоті < 10,
6| зміщення_по_висоті = зміщення_по_висоті + 1;
7| Переміняти місцями пікселі
8| [в + зміщення_по_висоті] [ ш + зміщення_по_ширині] і
9| [Кінець _висоти – в + зміщення_по_висоті] [ ш + зміщення_по_ширині];
Додаткові пояснення:
2| в := в + Розмір_Квадрата * 2 – мы «перескакуємо» 1 квадрат.
Висновки
Щодо алгоритму: варто сказати, що він досить простий та для шифрування власне зображень він є досить зручним через його достатню зрозумілість і симетрію.
Щодо симетрії: якщо виразити алгоритм як функцію , оригінальне зображення як , а зашифроване як , то і або, виразити, . Але у нашому алгоритмі це виражено трохи по іншому:
Нехай – шифрування по вертикалі, – шифрування по горизонталі, – оригінальне зображення , а – зашифроване, тоді , а .
Тобто щоб розшифрувати зашифроване зображення потрібно спочатку зашифрувати його по горизонталі, а потім і по вертикалі. Тоді вийде, що розшифроване і оригінальне зображення – однакові.
Формат bmp. Опис та специфікація
Початкові відомості
BMP (від англ. Bitmap Picture) – формат зберігання растрових зображень.
З форматом BMP працює величезна кількість програм, так як його підтримка інтегрована в операційні системи Windows і OS/2. Файли формату BMP можуть мати розширення . bmp, . dib і .rle. Крім того, дані цього формату включаються в двійкові файли ресурсів RES і в PE-файли.
Глибина кольору в даному форматі може бути 1, 2, 4, 8, 16, 24, 32, 48 біт на піксель, максимальні розміри зображення 65535 × 65535 пікселів. Однак, глибина 2 біта на піксель офіційно не підтримується.
У форматі BMP є підтримка стиснення по алгоритму RLE, однак тепер існують формати з більш сильним стисненням, і через великий обсяг BMP рідко використовується в Інтернеті, де для стиснення без втрат використовуються PNG і старіший GIF.