微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

生成一个 jpg 文件的许多不同的哈希值,而对图片的改动很小

如何解决生成一个 jpg 文件的许多不同的哈希值,而对图片的改动很小

我的目标是编写一个程序(例如在 Python 或 C++ 中),它将 JPG 文件(例如 tux.jpg)作为输入并对其进行微小的更改,以便它输出许多不同的图像(可能是一千个图像甚至更多),但在某种程度上,所有这些图像虽然具有不同的哈希值,但在视觉上看起来几乎相同,即更改应该对原始图像的影响尽可能小。

我首先尝试使用 jpg 标题,但这可能不足以制作我想要的成千上万张不同的图片。 作为一种天真的方式,我想翻转文件中的随机位,但该位可能会导致不太理想的结果,尤其是在小图片中可以看到(例如晚礼服图片中空白处的暗像素)。理想情况下,我想用“相邻”颜色更改随机像素,这样生成的两张图片几乎没有视觉差异。

为此,我阅读了 JPG 编解码器 example,但我发现它非常混乱且难以理解。有人可以帮助我我的程序在解析二进制格式的文件时应该查找什么,以及如何更改具有“相邻”颜色的随机像素?

解决方法

您可以通过播放文件头来更改文件的注释部分。一种简单的方法是使用现成的开源程序,该程序允许您放置您选择的注释,例如 HLLO 重复 8 次。那应该给你 256 位来玩。然后,您可以使用十六进制编辑器确定 HLLO 模式在文件中的位置。然后将数据加载到内存中并开始更改这 32 个字节并每次计算哈希以获得冲突(匹配的哈希)

当你发现碰撞时,宇宙已经结束了。

虽然理论上可行,但在合理的时间内破解 SHA256 几乎是不可能的,标准加密协议将结束,黑客将享受他们的时间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。