DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт з лабораторної роботи № 4. Організація стегоканалу в bmp-файлі

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Електронні обчислювальні машини

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

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

Про що ця робота

У звіті досліджено поняття стеганографії та можливості створення стегоканалу у BMP-файлі. Наведено програмну реалізацію методу LSB мовою Java.

У роботі розглядаються

  • Стеганографія
  • Стегоканал
  • BMP-файли
  • Метод LSB
  • Захист інформації
  • Програмна реалізація
  • Обробка зображень

Зміст і розділи

  1. Мета роботи
  2. Завдання
  3. Хід роботи
  4. Код реалізації алгоритму
  5. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів.
Викладачі:Не вказано

Ключові поняття

стеганографіястегоканалBMP-файлметод LSBпіксельшифруванняJavapixelReaderpixelWriterзображення

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

Міністерство освіти і науки Національний університет „Львівська політехніка” Кафедра 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. Текст після декодування Висновок
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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