Как мне скрыть 4 буквенно-цифровых символа в PNG, используя стеганографию в C? - PullRequest
2 голосов
/ 16 декабря 2010

Я видел набор примеров кода, который делает намного больше, чем я хочу, и кажется, что он требует больше ресурсов, чем хотелось бы (возможно, это неизбежно).

Все, что я хочу - это скрыть / извлечь 4-буквенное сообщение (слово) в / из файла PNG.Эти 4 буквы никогда не изменятся.Это всегда будут одинаковые 4 буквы.Его цель - действовать как простой вид отпечатка пальца.Все примеры, которые я вижу, кажутся очень сложными и включают сжатие текстовых файлов и тому подобное.

Кто-нибудь знает какой-нибудь написанный код, который имеет отношение к этому виду деятельности?Любой язык в порядке - мой в конечном итоге должен быть C или Obj-C.

1 Ответ

2 голосов
/ 16 декабря 2010

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

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

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

...