Skip to content

Визуальная криптография

Nastya Birillo edited this page Oct 29, 2015 · 4 revisions

Идея:спрятать исходное bmp-изображение в контейнеры по цветам (RGB) – еще три изображения.

Описание метода: Секретное изображение разбивается на три цветовых примитива (оттенки красного, зеленого и синего), а затем каждый примитив записывает в младшие биты одного из изображений-контейнеров. Таким образом после зашифровки каждый контейнер будет содержать в себе одну цветовую составляющую секретного изображения.

Зашифровка изображения: Чтобы определить, в какое из изображений прятать R-составляющую, в какое — G, а в какое — B, перед запуском алгоритма определяется количественное значение каждого из трех оттенков в каждом изображении-контейнере. Далее контейнеры выбираются таким образом, чтобы разница в цветах контейнера и цветового примитива секретного изображения была минимальна. Далее из каждого цветового примитива берется два старших бита и записывается в младшие биты соответствующего цвета у соответствующего контейнера. Два младших бита в двух оставшихся цветах обнуляются. Операция повторяется для каждого пикселя.

Восстановление изображения: Для этого возьмем первый пиксель из каждого изображения-контейнера. Два младших бита каждого цвета в этих пикселях сделаем старшими битами и сложим соответствующие цветовые составляющие (так как во время зашифровки младшие биты не шифруемого цвета обнулялись, то ненулевое значение будет иметь только одна цветовая составляющая в каждом контейнере). Таким образом мы восстановим цвет соответствующего пикселя секретного изображения (с некоторой погрешностью). Далее повторим эту операция для всех пикселей и получим восстановленное секретное изображение.

Проблема: искажение цветов и качества секретного изображения (например, было 24-битное, а стало 6 битое).

Решение: брать контейнеры с шириной и высотой в несколько (например, в 2) раза большими, чем у секретного изображения, а также хранить информацию в нескольких изображениях. Это позволит хранить большее количество бит, тем самым уменьшив потери или исключив их совсем.

Литература:

http://habrahabr.ru/post/121878/

http://habrahabr.ru/post/115673/

Разработка

  1. Стили кодирования
  • [Java](Код стайл для языка Java)
  • [C/C++](Стиль написания кода на С )
  • [C#](Стиль написания кода на С# )
  • [Swift](Руководство по оформлению кода на языке Swift )
  • Написание комментариев к коммитам
  1. Android
  • Android DevGuide
  • [QR codes](Работа c QR на Android)
  • [Полезные вещи](Полезные вещи для Android разработки)
  • [Архитектура приложения](Архитектура приложения)
  • [Используемые компоненты](Используемые компоненты)
  • [Инструкция по сборке проекта](Инструкция по сборке проекта)
  1. iOS
  1. C и C++
  • [Использование CMake для проектов на C++ и C ](Использование CMake для проектов на C и CPP)

Описание

  1. Форматы файлов
  • [.bmp](Cтруктура хранения bmp файлов)
  • [.jpg](Cтруктура хранения jpg файлов)
  • [.png](Cтруктура хранения png файлов)
  1. Алгоритмы шифрования
  1. Примеры использования
  • [Библиотека матричной алгебры](Пример использования библиотеки матричной алгебры)
  1. Описание процесса кодирования файла
  2. Способ обезопасить использование приложения
  3. Java фасад библиотеки алгоритмов
  4. Алгоритм шифрования bmp на java заглушке

Тест-кейсы

  1. Матричная арифметика
  • [A+B](Сложение матриц)
  • [A*p](Умножение матрицы на скаляр)
  • [A*B](Умножение матриц)
  • [Обратные матрицы](Нахождение обратной матрицы)
  1. Взятие по модулю
  • [A mod p](Взятие матрицы по модулю простого числа)
  • [A mod P](Взятие матрицы по модулю - матрицы из простых чисел)
  1. Суперпозиция (модуль - простое число)
  • [A+B mod p](Сложение матриц по модулю простого числа)
  • [A*c mod p](Умножение матрицы на скаляр по модулю простого числа)
  • [A*B mod p](Умножение матриц по модулю простого числа)
  1. Суперпозиция (модуль - матрицы из простых чисел)
  • [A+B mod P](Сложение матриц по модулю - матрице простых чисел)
  • [A*c mod P](Умножение матрицы на скаляр по модулю - матрице простых чисел)
  • [A*B mod P](Умножение матриц по модулю - матрице простых чисел)

##Прочее

  1. [Утечки памяти](Memory Leaks)
  2. [Базовые цвета](Базовые цвета)
  3. [Clean Architecture](Clean Architecture)
Clone this wiki locally