Как определить формулу скрытия стеганографического сообщения? - PullRequest
0 голосов
/ 02 мая 2018

Из трех пикселей я вычислил их LSB (наименее значимый бит); например, это три последовательных младших бита для трех пикселей: 010

Затем с первым и вторым LSB я выполняю операцию XOR: 1 Та же операция -XOR- для первого и третьего LSB: 0

Эти два двоичных значения - 1 и 0 - используются для скрытия сообщения, состоящего из двоичных значений.

Предположим, что три пикселя имеют эти три бинарных значения LSB 000. Затем создается таблица, чтобы скрыть / вставить два бита:

+----------+
|    000   |
+----------+
| 00 | 000 |
+----+-----+
| 01 | 001 |
+----+-----+
| 10 | 010 |
+----+-----+
| 11 | 100 |
+----+-----+

Когда два бита из сообщения равны 00, ни один из младших битов трех пикселей не изменяется ... но когда биты сообщения равны 01, последний LSB изменяется 00 1 .

Теперь предположим, что три пикселя имеют эти три LSB 001, тогда таблица для замены LSB:

+----------+
|    001   |
+----------+
| 00 | 000 |
+----+-----+
| 01 | 001 |
+----+-----+
| 10 | 101 |
+----+-----+
| 11 | 011 |
+----+-----+

Мне нужно сделать то же самое для оставшихся комбинаций LSB: 010, 011, 100, 101, 110, 111

Я пробовал разные логические операции для создания таблицы, представленной этими двумя.

Примечание : Цветная версия Table coding

1 Ответ

0 голосов
/ 02 мая 2018

По сути, триплет битов abc может быть уменьшен до пары бит de с использованием набора конкретных вычислений, которые

d = a XOR b
e = a XOR c

Для каждой пары de, которую вы хотите получить триплет abc, ближайший к любому триплету пикселей, ijk.

подход

Это таблица операций XOR

result    from
0         00, 11
1         01, 10

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

В вашем случае у вас есть независимое условие a XOR b и зависимое a XOR c, потому что a используется в них обоих. ab) может быть любым из двух значений, но c имеет только одну опцию, основанную на значении a.

Количество триплетов abc, которые уменьшаются до определенной комбинации de, можно рассчитать, используя 2 для каждого независимого ограничения и 1 для каждого зависимого ограничения и умножая их вместе. Следовательно, 2 x 1 = 2. И половина из них дополняют другие.

Более сложный пример был бы abcde -> fgh, с

f = a XOR b
g = a XOR c
h = d XOR e

Поскольку ограничения независимы, зависимы, независимы, вы получаете 2 x 1 x 2 = 4 комбинации abcde, которые уменьшаются до одинаковых fgh. Опять же, половина является дополнением к другой половине.

В любом случае для каждой пары de вычислите два триплета abc, которые уменьшаются до него, а затем вычислите расстояние Хемминга (HD) между каждым из этих триплетов и вашим триплетом пикселей ijk. Результат с более низким значением - это триплет, к которому вы хотите изменить пиксели, чтобы они сократились до этой конкретной пары de.

Например, тройки 000 и 111 сводятся к паре 00. Если младшие биты ваших пикселей равны 000, 001, 010 или 100, вы хотите изменить их на 000. И если они 110, 101, 011 или 111, измените их на 111.

Очевидно, что HD может быть значением от 0 до 3. Поскольку триплеты дополняют друг друга, если HD между триплетом и вашими фактическими пикселями равен, например, 1, HD с другим триплетом будет 2 , так что оба складывают до 3. В том же духе таблица, которую вы строите для пикселей 000, будет дополнять таблицу для 111.

   | 000 | 111
---+-----+----
00 | 000 | 111
01 | 001 | 110
10 | 010 | 101
11 | 100 | 011
...