如何定义隐写隐藏信息的公式?

时间:2018-05-02 03:40:58

标签: bit-manipulation xor steganography

从三个像素我计算出它们的LSB(最低有效位);例如,这些是三个像素的三个连续LSB:010

然后,使用第一个和第二个LSB,我执行XOR操作:1 第一个和第三个LSB的操作-XOR-相同:0

这两个二进制值 - 10 - 用于隐藏由二进制值组成的消息。

假设三个像素具有这三个LSB 000二进制值。然后创建一个表来隐藏/插入两个位:

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

当消息中的两位是00三个像素中没有一个' LSB已更改...但当消息位为01时,最后一个LSB​​更改为00 1

现在,假设三个像素具有这三个LSB 001,那么用于LSB替换的表是:

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

我需要对剩余的LSB组合执行相同操作:010011100101110111

我已经尝试了不同的逻辑操作来创建一个表,如这两个表。

注意:彩色版 Table coding

1 个答案:

答案 0 :(得分:1)

基本上,使用一组特定的计算,可以将三位的位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组合的abcde -> fgh三元组的数量可以通过对每个独立限制使用2来计算,并且对于每个从属限制使用1并将它们相乘。因此,2 x 1 = 2.其中一半是另一半的补充。

一个更复杂的例子是f = a XOR b g = a XOR c h = d XOR e

abcde

由于限制是独立的,依赖的,独立的,因此您可以得到2 x 1 x 2 = 4个fgh组合,这些组合会减少到相同的de。再一次,有一半是对另一半的补充。

无论如何,对于每个abc对,计算减少它的两个ijk三元组,然后计算每个三元组和像素三元组de之间的Hamming distance (HD)。值较低的结果是您想要修改像素的三元组,以便它们减少到特定的000对。

例如,三元组11100会缩减为000对。如果像素中的LSB为001010100000,则您希望将它们修改为110。如果它们是101011111111,请将其修改为000

HD显然可以是介于0和3之间的值。由于三元组相互补充,如果三元组与实际像素之间的HD为1,则HD与另一个三元组将为2因此,两者加起来为3.同样,为像素111构建的表格将与 | 000 | 111 ---+-----+---- 00 | 000 | 111 01 | 001 | 110 10 | 010 | 101 11 | 100 | 011 的表格相辅相成。

<div class="parallax" [ngStyle]="{'background-image': 'url('+ parallaxImage+')'}"></div>