Чтобы скрыть данные в файле, нужно что-то знать о том, что там ожидается. Например, если файл, который вы пытаетесь скрыть, имеет большие области сплошного цвета, изменение даже одного пикселя на смежный цвет может быть заметно.
Если предположить, что однопиксельное смещение на смежный цвет не будет заметным, вы можете сохранить в файле 4 буквы (20 бит), псевдослучайно назначая младший бит для каждого красного, зеленого или синего компонента от пикселя до одного из 20 элементов дискретизации, а затем подсчитывает, имеет ли четное или нечетное количество компонентов пикселя в каждом элементе разрешения установленный LSB. Если четность ячейки не соответствует желаемому значению ячейки, выберите пиксельный компонент произвольно / случайным образом из числа назначенных этому ячейке и произвольно / случайно увеличите или уменьшите его на единицу (если оно равно 0, вы должны увеличиваться; если FF, уменьшать).
Для декодирования требуется знание сопоставления компонентов пикселя с 20 ячейками, но даже при наличии большого количества пар неизмененных и измененных файлов не удалось бы угадать достаточно информации для декодирования произвольного файла.