Стеганография изображений

Я работаю над приложением Steganography. Мне нужно скрыть сообщение внутри файла изображения и защитить его паролем, с небольшой разницей в размере файла. Я использую алгоритм Least Significant Bit и могу успешно работать с файлами BMP, но он не работает с файлами JPEG, PNG или TIFF. Этот алгоритм вообще работает с этими файлами? Есть ли лучший способ добиться этого? Спасибо.


person MNIK    schedule 09.05.2010    source источник
comment
Связанный с этим вопрос, который может помочь: stackoverflow.com/questions/1216156/   -  person John    schedule 09.05.2010
comment
С форматами со сжатием с потерями все гораздо сложнее, потому что сжатие изображений с потерями специально разработано для снижения точности деталей изображения, которые трудно воспринимать, а это именно то место, где стеганографические методы хотят поместить свою информацию. Сжатие без потерь также проблематично, так как введение новой информации обычно снижает эффективность сжатия, увеличивая размер файла.   -  person Dan Bryant    schedule 09.05.2010
comment
PNG без потерь. И JPEG может быть без потерь. Раньше такой пример был на stega.maxant.co.uk, но, похоже, офлайн на данный момент.   -  person John Smith    schedule 20.11.2017


Ответы (3)


Это сильно зависит от того, как работает конкретный формат изображения. Вам нужно погрузиться во внутренности формата, который вы хотите использовать.

Для JPEG вы можете возиться с последними битами коэффициентов DCT для каждого блока.

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

person Thomas    schedule 09.05.2010

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

Я бы также посоветовал общее введение в стеганографию, включая различные форматы.

person Dario    schedule 09.05.2010

Метод наименьшего значащего бита не работает с изображениями JPEG и GIF, поскольку вы используете данные пикселей (необработанное изображение) для хранения скрытой информации перед сжатием. Пиксель p с данными 0x123456, вероятно, не будет иметь этого значения после сжатия, поскольку его значение зависит от степени сжатия и соседних пикселей. В данном случае речь идет об алгоритмах, которые не только сжимают изображение (например, ZIP, сохраняющий содержимое), но и изменяют распределение цветов, текстуру и качество, чтобы уменьшить количество бит для его представления.

Однако PNG можно использовать только для сжатия изображения в том же смысле, что и ZIP-файл, сохраняя содержимое. Поэтому вы можете использовать наименее значимый бит для изображений PNG, чтобы на странице стеганографии Википедии был показан пример в этом формате.

person Gabriel Ambrósio Archanjo    schedule 29.09.2013