Я работаю над приложением Steganography. Мне нужно скрыть сообщение внутри файла изображения и защитить его паролем, с небольшой разницей в размере файла. Я использую алгоритм Least Significant Bit и могу успешно работать с файлами BMP, но он не работает с файлами JPEG, PNG или TIFF. Этот алгоритм вообще работает с этими файлами? Есть ли лучший способ добиться этого? Спасибо.
Стеганография изображений
Ответы (3)
Это сильно зависит от того, как работает конкретный формат изображения. Вам нужно погрузиться во внутренности формата, который вы хотите использовать.
Для JPEG вы можете возиться с последними битами коэффициентов DCT для каждого блока.
Для файлов на основе палитры (GIF и некоторых PNG) вы можете добавить в палитру дополнительные цвета, которые выглядят идентичными существующим, и кодировать информацию на основе того, какой из них вы используете.
Вам придется различать форматы на основе пикселей (битмап) и форматы на основе палитры (GIF), для которых метод стеганографии сильно отличается. Также имейте в виду, что существуют форматы изображений, такие как JPG, которые теряют информацию в процессе сжатия.
Я бы также посоветовал общее введение в стеганографию, включая различные форматы.
Метод наименьшего значащего бита не работает с изображениями JPEG и GIF, поскольку вы используете данные пикселей (необработанное изображение) для хранения скрытой информации перед сжатием. Пиксель p с данными 0x123456, вероятно, не будет иметь этого значения после сжатия, поскольку его значение зависит от степени сжатия и соседних пикселей. В данном случае речь идет об алгоритмах, которые не только сжимают изображение (например, ZIP, сохраняющий содержимое), но и изменяют распределение цветов, текстуру и качество, чтобы уменьшить количество бит для его представления.
Однако PNG можно использовать только для сжатия изображения в том же смысле, что и ZIP-файл, сохраняя содержимое. Поэтому вы можете использовать наименее значимый бит для изображений PNG, чтобы на странице стеганографии Википедии был показан пример в этом формате.