繁体   English   中英

如何在图像位中设置标志以标记音频文件的结尾

[英]How to set a flag in image bits to mark the end of an audio file

目前,我正在尝试将波形格式的音频文件隐藏在位图格式的图像中。

我将它们都转换为二进制形式,现在我试图设置某种标记来标记音频文件的结尾,以便从图像中提取音频时,我知道该从哪里停止。

注意事项1:图像为24bit。

2:音频数据为PCM 16位。

3:我使用的是LSB,所以音频的每个16位至少需要5个像素和第6个像素的元素(5 * 3 = 15 +1 = 16)。

没错,您不能依靠文件结束标记是正确的,因为所有字节值都可能在您的字节流中。 因此,您必须使用标题。 必须明确地实现这一点,以便解码器知道在哪里以及如何寻找以提取其信息。 这简单地转换为在消息的开头具有标题,在这种情况下,将其设置为固定大小是很方便的,尽管不是必需的。

如果您的消息可以大于65536位,那么您的消息大小显然将需要超过16位,例如32位。 现在,您可能会争辩说,如果要嵌入很小的消息,则32位消息大小标头的开头将有太多零,这将是过大的。 但是,即使您打算嵌入1 kB的数据,额外的32位也几乎不会增加任何额外的噪声。

根据Kerckhoff的原理 ,您确实应该假定攻击者完全了解您的方案,并且如果您以静态方式嵌入消息,那么对于他们来说,提取消息应该很简单。 取而代之的是,您可以使用密码或密钥作为PRNG的种子,然后使用它来改变像素的顺序。 例如,让我们分别用数字1-3调用第一个像素的RGB分量,并用4-6调用第二个像素的RGB分量。 通过生成数组[1, 2, 3, 4, 5, 6]并对其进行改组,可以得到顺序[4, 3, 2, 6, 5, 1] 4、3、2、6、5、1 [4, 3, 2, 6, 5, 1] 因此,当您嵌入秘密(包括消息大小)时,第一位隐藏在第二个像素的红色部分中,第二位隐藏在第一个像素的蓝色部分中,以此类推。没人可以说这是“可见”,因为如果没有正确的像素顺序,他们将无法有意义地提取邮件。

但是,您必须记住,隐写术是将信息隐藏在另一种介质中的艺术, 甚至没有人怀疑它的存在 相比之下,加密是关于公开传输您的消息的,但是加密的方式是只有目标参与者才能知道其内容。 对于隐写术而言,这意味着不必一定要提取您的信息来破坏其目的。 您因只是秘密地尝试传输信息而感到沮丧,无论其内容是否可读。 您知道LSB像素修改方法已损坏,因此尝试使其稍微更安全是没有意义的。 相反,您只需要担心使用该方法弄脏您的手并学到一些有关隐写术的知识。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM