Кодирование двоичных данных в PNG? - PullRequest
1 голос
/ 24 мая 2011

Я ищу информацию о том, как кодировать небольшое количество двоичных данных (скажем, около 200 байтов) в PNG с помощью цветов; По сути, Hid.im делает для .torrent файлов. Любая информация или трамплин для лучшей практики будут звездными.

Спасибо!

1 Ответ

5 голосов
/ 24 мая 2011

Сама основа сокрытия данных в сжатом без потерь изображении - это модификация младших бит каждого пикселя, так что в целом эти биты что-то значат.

Например, в R.G.B. вы можете изменить последний бит значения красного цвета (технически человеческий глаз менее чувствителен к красному, чем к зеленому или синему).

Например, нарисуем линию из 8 пикселей, например, значение Red для каждого пикселя имеет значение Red для предыдущего пикселя + 1

   Pixel1 = (120, 203, 391)
   Pixel2 = (121, ..., ...)
   ...
   Pixel8 = (128, ..., ...)

В двоичном виде это:

   Pixel1 = (01111000, ..., ...)
   Pixel2 = (01111001, ..., ...)
   ...
   Pixel8 = (10000000, ..., ...)

Теперь давайте зашифруем номер 63 в этой строке:

   63 = 00011111
   # Encrypting from right to left, by writing the data to the minor bit
   Pixel1 = (0111100[0], ..., ...) -> 120
   Pixel2 = (0111100[0], ..., ...) -> 120
   Pixel3 = (0111101[0], ..., ...) -> 122
   Pixel4 = (0111101[1], ..., ...) -> 123
   Pixel5 = (0111110[1], ..., ...) -> 125
   ...
   Pixel8 = (1000000[1], ..., ...) -> 129

Вот и все. Вы знаете, где находится информация и как ее следует извлекать. Тем не менее, этот метод очень ограничен по мощности.

...