两个不同文件的哈希值可能是一样的吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个不同文件的哈希值可能是一样的吗相关的知识,希望对你有一定的参考价值。

两个不同文件的哈希值可能是一样的吗一个jpg文件 一个bmp文件 两个东西是同一张照片 只是保存格式不同 那么这两个东西是不是有一样的哈希值 不知道的请别来捣乱 很急!!

有可能相同的,简单哈希值为32位无符号也就是16进制0xFFFFFFFF
那么当你有0xFFFFFFFF+1个完全不同的文件时,那它这时是不是就没有无重复值可用了是吧。那么这时100%有1个以上的文件与其他文件值重复。
那你要说有128位的哈希值,我同样128位数的不重复文件再+1个,结果不是和这32位的一样。
所以这种东西可能出现重复,但你应该不可能正好遇到如:1个1GB的文件 与 1个1MB的木马 出现同一哈希值的情况。
参考技术A 不可能一样,这个和指纹是一个道理。有检测软件可以下载,你可以试试。追问

文件内容一样

追答

眼睛看到的内容和文件本身实际的内容是两个概念。因为文件还有格式之分,还有很多肉眼看不到的数据内容。

参考技术B 不会一样的。Hash值和MD5、SHA1、CRC32一样是用来在下载文件时防止文件下载有问题时用来校验的。比如你下载vs2017的话这个文件将近20个G,如果下载后的文件Hash值和提供的不一样你就不要安装了。小文件一般不会整这些的。追问

文件内容相同 只是格式不同

就比如1张照片 一个是jpg格式 一个是bmp 这两个不同格式的照片哈希值不同??

追答

这两个文件的hash值时不同的。这是两个完全不同的文件,尽管文件存储的图片在你看来时一致的,但是jpg和bmp时两个完全不同存储格式。jpg和jpeg文件对图像进行了一定的压缩。

追问

好的谢谢

就是说 压缩改变了 原文件大小了对吧

本回答被提问者采纳
参考技术C 其实理论上是有可能的,只不过这个可能性非常小,你可以了解一下hash碰撞

生成 jpg 文件的许多不同哈希值,而对图片的更改最少

【中文标题】生成 jpg 文件的许多不同哈希值,而对图片的更改最少【英文标题】:Producing many different hashes of a jpg file with minimal change to picture 【发布时间】:2021-10-01 10:18:18 【问题描述】:

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

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

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

【问题讨论】:

您使用的是什么类型的哈希?多少位? 我使用 256 位哈希。主要是 sha2,但可能想尝试其他的。 【参考方案1】:

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

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

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

【讨论】:

以上是关于两个不同文件的哈希值可能是一样的吗的主要内容,如果未能解决你的问题,请参考以下文章

文件的哈希值事啥意思

人工智能算法之哈希算法

哈希值

哈希中每个键的不同类型的值

两个不同的字符串的hash计算值一定会不同吗

区块链知识储备-哈希算法和数字签名