附加到 JPG 的随机数据会使其无法使用吗?

Posted

技术标签:

【中文标题】附加到 JPG 的随机数据会使其无法使用吗?【英文标题】:Will random data appended to a JPG make it unusable? 【发布时间】:2010-09-08 05:38:49 【问题描述】:

所以,为了简化我的生活,我希望能够在我的程序正在处理的一些 jpg 图像的末尾附加 1 到 7 个额外字符*。这些是虚拟填充(填充物等 - 可能都是 0x00),只是为了使文件大小成为 8 字节的倍数以进行块加密。

已经用一些程序尝试过这个,看起来它们对附加字符很好,这些字符出现在 FF D9 that specifies the end of the image 之后 - 所以文件格式似乎定义得很好,我正在添加的“损坏”最后应该没关系。

如果需要,我总是可以稍后处理文件,但我更喜欢做最简单的事情 - 让它们保留(我正在解密其他文件类型,他们不会介意,所以有一个特殊的情况很烦人)。

我认为多年前Steganography hullaballo 的所有讨论,有人在这里有一些意见......

(8字节块的加密处理,我不想保存预加密的文件大小,所以在输入数据后附加0x00,解码后保留)

【问题讨论】:

【参考方案1】:

不,您可以在 jpg 文件的末尾添加位,而不会使其无法使用。 jpg 文件的标题告诉了如何读取它,因此读取它的程序将在 jpg 数据的末尾停止。

事实上,人们通过将 zip 数据附加到 jpg 数据的末尾来隐藏 jpg 文件中的 zip 文件。由于这些格式的结构方式,生成的文件在任何一种格式下都有效。

【讨论】:

不可用(这是问题)与降低可用性不同。有点挑剔,我会同意的。但是,这是一个重要的区别,因为它可能是一个可行的解决方案。 好的,我不确定说“不降低其可用性”是否意味着“使其无法使用”,但我将对其进行编辑以使其更清晰。【参考方案2】:

您可以.. 但结果可能无法预测。

即使格式中有足够的信息告诉客户端忽略额外的数据,它也可能不是程序员测试的情况。

一个偏执的程序可能会查看大小,注意到差异并决定它不会处理您的文件,因为它显然没有完全理解它。当文件中的随机字节可能被视为安全风险时,从 Web 读取数据时尤其可能出现这种情况。

【讨论】:

【参考方案3】:

您可以将数据嵌入 JPEG(或 EXIF 或 IPTC 字段)内的 XMP 标记中。 XMP 是 XML,因此您可以灵活地处理自己的自定义内容。

这可能不是最简单的事情,但将您的数据放在这里将保持 JPEG 的完整性,并且不需要“后处理”。

您的数据随后会显示在其他成像软件中,例如 PhotoShop,这可能并不理想。

【讨论】:

【参考方案4】:

正如其他人所说,您无法控制程序如何处理图像文件,因此某些程序可能会发现图像有效,而其他程序可能不会。

但是,这里有一个更大的问题。从你的问题来看,我推断你正在练习“通过默默无闻的安全”。这被广泛认为是一种非常糟糕的做法。使用 Google 查找有关该主题的大量文章。

【讨论】:

这说明了什么?我正在使用 TEA 算法来加密数据,但它一次加密 8 个字节。我没有在加密文件中包含元数据来告诉我原始数据有多大,而是将原始数据填充到 8 字节边界,并保留填充。

以上是关于附加到 JPG 的随机数据会使其无法使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

隐藏/加密数据的方法

无法将数据库附加到 SQL Server Enterprise,需要 Express 吗?

在对用户密码进行散列之前添加一个常量字符串会使其更安全吗?

使用setInterval通过JQuery暂停幻灯片放映吗?

使用组合框从数据库中选择表并填充 datagridview - 无法使其工作

.NET Core API - IIS - 无法使其工作