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

在用几个程序尝试过这一点后,看来它们对附加字符很满意,这些附加字符出现在 FF D9 指定图像的结尾 - 所以看来文件格式定义得足够好,我在最后添加的“损坏”应该不重要。

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

我认为所有的谈话 隐写术 几年前,有人在这里提出了一些意见......

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

有帮助吗?

解决方案

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

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

其他提示

你可以 ..但结果 可能 不可预测。

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

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

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

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

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

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

然而,这里有一个更大的问题。从您的问题来看,我正在推论您正在练习“通过默默无闻”。它被普遍认为是一种非常糟糕的做法。使用 Google 查找大量有关该主题的文章。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top