为了保证图像不被篡改,我想根据图像文件的内容(特别是PNG)创建一个唯一的哈希。我用谷歌搜索了,我知道基于文件创建一个哈希很有可能,但它似乎考虑了其他图像内容的东西?
例如,为了测试,我创建了一个非常大的PNG文件,其中包含随机颜色/线条/形状等。然后我将文件保存为test1.png。然后,我在图像的角落创建了一个像素黑点,并保存为test2.png。
我在两个图像上运行了md5sum,并获得了不同的哈希值(预期)。然后我下载了test2.png,删除了单个黑色像素,并将文件保存为test3.png。 test3.png和test1.png包含完全相同的图像。
现在,根据我的理解,PNG应该是无损压缩,因此不应该是问题(?)。关于所有这些,我有点陷入黑暗(你可能会说),所以如果有人能给我任何想法,我会非常感激!
答案 0 :(得分:5)
你没有这么说,但我猜你们为test1.png和test3.png得到了不同的哈希值?
除了图像数据之外,PNG文件还可以包含相当多的元数据;有些元数据可能不同。也可以以不同方式压缩相同的图像数据。如果您真的想知道,请比较文件以找出完全不同的内容。
如果你真的想只散列文件的内容,你很可能必须将它们转换为原始RGB格式并改为散列。