代码之家  ›  专栏  ›  技术社区  ›  Sergio Tapia

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

  •  2
  • Sergio Tapia  · 技术社区  · 15 年前

    在使用Java/.NET阅读了一些关于隐写术的教程后,我感觉到你从秘密图像中抓取每个单独的像素,然后将其放置在每个图像的最低像素位上。

    我说的对吗?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Ethan Heilman    15 年前

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

    一种方法,通过将秘密存储在每个像素的最低位来隐藏图像中的秘密信息。 虽然这可能会愚弄你的弟弟,但隐藏信息的方法却很糟糕,因为:

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

    • 它改变了图像的可能属性,它会向另一个寻找“秘密”的人扔红旗。例如参见 Stegdetect -一种自动检测图像中隐写内容的工具。

    更安全的隐写术可以采取写笔记的形式,其中一些字母的位置包含秘密信息。 诀窍是使用隐写术将信息隐藏在计算机不擅长分析的事物中(人类语言、符号、歌曲的含义或意义)。 比特操作很容易被计算机检测到。

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

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

        2
  •  0
  •   Esteban Araya    15 年前

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

        3
  •  0
  •   Scott Wisniewski    15 年前

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

    正确的做法是,在使用图像存储隐藏数据时,低阶颜色位是正确的存储位置。但是,我建议不要尝试在图像之间关联像素。大多数图像格式都提供了原始像素表示的某种压缩。最好直接从文件系统中读取隐藏图像的位流,并将这些位与主机图像中的像素关联起来。这将需要更小的主机映像。

    推荐文章