Організація

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2018
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Захист інформації в комп’ютерних системах

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки Національний університет „Львівська політехніка” Кафедра EОМ Звіт з лабораторної роботи № 4 з дисципліни: “ Захист інформації в комп’ютерних системах ” Організація стегоканалу в BMP-файлі Варіант 3 2018 Тема: Організація стегоканалу в BMP-файлі Мета: Ознайомитися з поняттям стеганографії та проаналізувати можливості організації стегоканалу в ВМР-файлі Завдання: Створити програму, що реалізує довільний перестановочний шифр. Підготувати і захистити звіт, в якому обов’язково навести алгоритм роботи даного перестановочного шифру. Хід роботи: Код реалізації алгоритму package sample; import javafx.scene.image.PixelReader; import javafx.scene.image.PixelWriter; import javafx.scene.image.WritableImage; import javafx.scene.paint.Color; public class ImageWorker { public enum State { Hiding, Filling_With_Zeros }; public static WritableImage embedText(String text, WritableImage bmp) { State state = State.Hiding; int charIndex = 0; int charValue = 0; int pixelElementIndex = 0; int zeros = 0; double R, G, B; for (int i = 0; i < bmp.getHeight(); i++) { for (int j = 0; j < bmp.getWidth(); j++) { PixelReader pixelReader = bmp.getPixelReader(); Color pixel = pixelReader.getColor(j, i); R = pixel.getRed() - pixel.getRed() % 2; G = pixel.getGreen() - pixel.getGreen() % 2; B = pixel.getBlue() - pixel.getBlue() % 2; for (int n = 0; n < 3; n++) { if (pixelElementIndex % 8 == 0) { if (state == State.Filling_With_Zeros && zeros == 8) { if ((pixelElementIndex - 1) % 3 < 2) { PixelWriter pxl = bmp.getPixelWriter(); pxl.setColor(j, i, Color.color(R, G, B)); } return bmp; } if (charIndex >= text.length()) { state = State.Filling_With_Zeros; } else { charValue = text.charAt(charIndex++); } } switch (pixelElementIndex % 3) { case 0: { if (state == State.Hiding) { R += charValue % 2; charValue /= 2; } } break; case 1: { if (state == State.Hiding) { G += charValue % 2; charValue /= 2; } } break; case 2: { if (state == State.Hiding) { B += charValue % 2; charValue /= 2; } PixelWriter pxl = bmp.getPixelWriter(); pxl.setColor(j, i, Color.color(R, G, B)); } break; } pixelElementIndex++; if (state == State.Filling_With_Zeros) { zeros++; } } } } return bmp; } public static String extractText(WritableImage bmp) { int colorUnitIndex = 0; double charValue = 0; String extractedText = new String(); for (int i = 0; i < bmp.getHeight(); i++) { for (int j = 0; j < bmp.getWidth(); j++) { PixelReader pixelReader = bmp.getPixelReader(); Color pixel = pixelReader.getColor(j, i); for (int n = 0; n < 3; n++) { switch (colorUnitIndex % 3) { case 0: { charValue = charValue * 2 + pixel.getRed() % 2; } break; case 1: { charValue = charValue * 2 + pixel.getGreen() % 2; } break; case 2: { charValue = charValue * 2 + pixel.getBlue() % 2; } break; } colorUnitIndex++; if (colorUnitIndex % 8 == 0) { charValue = reverseBits((int)charValue); if (charValue == 0) { return extractedText; } char c = (char)charValue; extractedText += c; } } } } return extractedText; } public static int reverseBits(int n) { int result = 0; for (int i = 0; i < 8; i++) { result = result * 2 + n % 2; n /= 2; } return result; } } / Рис. 1. Процес приховування тексту в зображенні / Рис. 2. Текст після декодування Висновок На даній лабораторній роботі я ознайомився з поняттям стеганографії та проаналізував можливості організації стегоканалу в ВМР-файлі, також я розробив програмну реалізацію стегоканалу використовуючи LSB-метод.
Антиботан аватар за замовчуванням

24.11.2018 18:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!