Иногда нужно передать сообщение так, чтобы никто даже не догадался, что оно есть.
Наука о скрытии самого факта сообщения — стеганография. Проще всего прятать текст в цифровой картинке: в ней миллионы пикселей.
Гипотеза
Если менять в каждом пикселе только самые младшие биты, можно спрятать целое письмо незаметно. Но чем больше битов задействовать, тем сильнее портится картинка — и в какой-то момент подмену видно.
Цель
Показать, как спрятать текст в картинку, и измерить вместимость тайника и его заметность.
Цвет пикселя — три числа от 0 до 255 (красный, зелёный, синий). В двоичном виде 200 = 11001000.
В картинке 300×200 (180 000 каналов) помещается больше 10 000 русских букв.

Слева — исходник, в центре — та же картинка с письмом (на глаз одинаковые), справа — разница, усиленная в 255 раз. Изменилась только полоска, где спрятано письмо.

PSNR — показатель схожести: больше 40 дБ глаз разницы не видит.


Одна и та же картинка при 1, 2, 4 и 8 битах. При 1–2 битах чистая, при 8 — вся в «шуме». «Золотая середина» — 1–2 бита: и места хватает, и подмена невидима.
Отправка как фото сжимает картинку и чуть меняет пиксели.
Сжатие огрубляет мелкие детали — а именно в них спрятано письмо. Поэтому тайник пересылают только файлом (PNG, BMP).