rest api интерфейс: https://pdf-encoder.herokuapp.com/api/
Главный экран программы: https://pdf-encoder.herokuapp.com/
Цель работы: разработка программы скрытия и извлечения информации в PDF-файлах.
- возможность выбора файла-контейнера;
- возможность выбора файла-сообщения произвольного типа или ввода текста скрываемого сообщения;
- контроль возможности скрытия сообщения в контейнере;
- возможность шифровать/расшифровывать внедряемое/извлекаемое сообщение на ключе, выводимом из парольной фразы;
- возможность определять при расшифровании извлекаемых из контейнера данных факт ввода неверной парольной фразы.
В качестве файла контейнера могут выступать файлы в формате PDF. Для скрытия сообщения в контейнере необходимо наличие хотя бы одной страницы. Парольная фраза используется для извлечения скрытых данных, в одном контейнере могут храниться несколько сообщений с разными парольными фразами.
Для достижения поставленной цели необходимо:
- Выбрать способ обработки pdf документа
- Выбрать способ скрытия сообщения
- Реализовать пользовательский интерфейс
В формате PDF присутствуют 8 основных типов данных:
- Логический
- Целочисленный
- Число с плавающей запятой
- Строка
- Имя
- Массив
- Словарь
- Поток
Словарь использует в качестве ключей тип Имя, а значение может быть любым объектом, включая Потоки данных.
Алгоритм скрытия данных:
- Генерируется ключ на основе парольной фразы
- Если в контейнере присутствует сообщение с таким ключом, то оно удаляется из контейнера
- Выбирается случайная страница в документе
- Если на этой странице найден словарь “Contents” , то данные записываются в этот словарь, иначе данные будут записаны прямо в страницу. В качестве ключа используется ключ из 1 пункта, значение – поток из скрываемых данных. Алгоритм извлечения данных:
- Генерируется ключ на основе парольной фразы
- Анализируется каждая страница на наличие в ней или в “Contents” полученного ключа, если такой ключ найден, то извлекается соответствующее ему значение.
- Если значение – это поток, то данные извлечены успешно
Разработанная программа - веб-приложение с rest api интерфейсом и простым клиентом на html. Приложение построено по шаблону проектирования MVC. Для шифрования используется Blowfish – симметричный блочный алгоритм шифрования. Блок 64 бит, ключ переменной длины от 32 до 448 бит. Для работы с PDF файлами применяется библиотека iText7 [3].