图像隐写术

10

我正在开发一个隐写应用程序。我需要将一条信息隐藏在图像文件中,并使用密码进行加密,使文件大小的变化不大。我正在使用最低有效位算法,可以成功地处理BMP文件,但无法对JPEG、PNG或TIFF文件进行操作。这个算法是否完全适用于这些文件?有更好的方法来实现吗?谢谢。


可能有帮助的相关问题:https://dev59.com/F3M_5IYBdhLWcg3wzmvM - John
3
使用有损压缩格式会更加困难,因为有损图像压缩的设计目的是降低难以察觉的图像细节的保真度,而这正是隐写术技术想要放置信息的地方。无损压缩也存在问题,因为引入新信息通常会降低压缩的效率,增加文件大小。 - Dan Bryant
PNG是无损的。而JPEG可以是无损的。曾经在http://stega.maxant.co.uk上有一个关于此的例子,但目前似乎已经离线了。 - John Smith
4个回答

8
这在很大程度上取决于特定图像格式的工作方式。您需要深入了解要使用的格式的内部结构。
对于JPEG,您可以调整每个块的DCT系数的最后几位。
对于基于调色板的文件(如GIF和某些PNG),您可以向调色板中添加与现有颜色相同的额外颜色,并根据使用哪种颜色来编码信息。

2

在使用隐写术时,您需要区分基于像素的(位图)和基于调色板的格式(GIF),这两种格式的隐写技术是不同的。此外,还要注意像JPG这样的图像格式在压缩过程中会丢失信息。

我还建议您了解一些关于隐写术的概述,包括不同的格式。


0

最不重要位(Least Significant Bit)方法在JPEG和GIF图像上无法使用,因为您在压缩之前使用像素数据(原始图像)来存储隐藏信息。像素p的值,在压缩后可能不会保持0x123456这个数值,因为它的值取决于压缩率和相邻像素。在这种情况下,我们谈论的是算法不仅能压缩图像(例如ZIP一样,保留内容),而且还能改变颜色分布、纹理和质量,以减少表示它所需的比特数。

然而,PNG可以只用于压缩图像,就像ZIP文件一样保留内容。因此,您可以在PNG图像上使用最不重要位,因此Wikipedia的隐写术页面显示了这种格式的示例。


0
只要图像格式是无损的,你就可以在像素中使用LSB隐写术(BMP、PNG、TIFF、PPM)。如果它是有损的,你就必须尝试其他方法,因为压缩和随后的解压会导致像素发生微小变化,消息就会丢失。在GIF中,你可以将你的消息嵌入到调色板中。在JPEG中,你可以改变DCT系数,这是图像的低级频率表示,可以被读取并保存为JPEG文件无损
关于JPEG的隐写术有广泛的研究。对于介绍,我个人推荐Jessica Fridrich的《数字媒体隐写术:原理、算法和应用》- 对于认真尝试隐写术的人来说,这是必读的材料。各种图像格式的方法在那里进行了深入讨论。
此外,LSB效率低下,非常容易被检测出来,你不应该使用它。有更好的算法,但通常需要大量的数学和复杂的计算。寻找“隐写嵌入失真”和“隐写代码”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接