关于编程图像中隐写术的问题

时间:2010-07-10 14:08:34

标签: .net steganography

在阅读了几篇关于使用Java / .NET的隐写术教程后,我的印象是你从秘密图像中抓取每个像素,然后将它放在封面图像中每个像素的最低位。 / p>

我对此是否正确?

3 个答案:

答案 0 :(得分:1)

Steganography是将信息隐藏在另一条信息中。这里的目标是隐藏信息。

这样做的一种方法是通过将秘密存储在每个像素的最低位中来隐藏图像中的秘密信息。 虽然这可能会欺骗你的孩子兄弟,但这是隐藏信息的一种非常糟糕的方式,因为:

  • 任何关心的人都知道,因此会知道检查最低位。

  • 它改变了图像的概率属性,它会向另一个寻找“秘密”的红色标志。例如,请参阅Stegdetect - 一种用于检测图像中隐写内容的自动工具。

更安全的隐写形式可以采用写一个注释的形式,其中一些字母位置包含一个秘密信息。 诀窍是使用隐写来隐藏计算机不善分析的事物(人类语言,符号,歌曲的意义或重要性)。 计算机可以很容易地检测到位操作。

请记住在将秘密信息放入隐写信息之前对其进行加密。这样,如果他们发现消息他们不知道你试图发送什么,并且因为大多数密码从非常随机的输入(人类语言,图像等)产生相当随机的输出,如果有人在调查消息,他们可能会误认为随机噪音。

如果你想了解更多,这里有一些关于隐写术的好文章:

答案 1 :(得分:0)

是,使用最低(冗余/有噪声)位。

答案 2 :(得分:0)

隐写术实际上是关于数据隐藏,无论数据是隐藏的还是提供封面的东西都是图像。可以使用具有足够冗余的任何数据格式。 X86指令集就是一个很好的例子。其他地方包括文件系统的未使用部分。

使用图像存储隐藏数据是正确的,低位颜色位是存储它们的正确位置。但是,我建议不要试图关联图像之间的像素。大多数图像格式通过原始像素显示提供某种压缩。最好直接从文件系统读取隐藏图像的比特流,并将这些比特与主机图像中的像素相关联。这将需要更小的主机图像。