Сама основа сокрытия данных в сжатом без потерь изображении - это модификация младших бит каждого пикселя, так что в целом эти биты что-то значат.
Например, в 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
Вот и все. Вы знаете, где находится информация и как ее следует извлекать.
Тем не менее, этот метод очень ограничен по мощности.