min*_*nto 10 firmware md5sum checksums
两个不同的二进制文件可以有相同的 md5 总和吗?一个二进制固件文件具有不同的版本号并标记为已修订,修复了小错误。但是两个文件都有相同的 md5 总和,我认为修改后的文件不能有相同的 md5 总和 - 这会是一个错误吗?
Lig*_*bit 16
现有答案未能指出的是,为什么在这种情况下碰撞被认为几乎不可能发生。
MD5 与任何散列算法一样,经过精心设计,因此如果您只更改少量字符,就不会发生冲突。您必须更改大部分(如果不是全部)才能循环回相同的哈希值。那是因为散列的全部意义在于检测一位(或几位)错误;在这个问题域中,您希望较小的更改肯定会触发哈希更改。虽然我们现在知道 MD5 是有缺陷的,但该属性一直保留到今天。
所以,除非固件的新版本是完全不同的,而且除非你只是目睹了一次在一百万的现象,赔率是巨大的,你只需再次收到的旧版本。恭喜,因为这是哈希检查过程完全按预期工作。:)
hee*_*ayl 11
通常,md5只有当两个文件的内容完全相同时,它们才能具有相同的哈希值。即使是一点点变化也会产生完全不同的哈希值。
有一点需要注意,虽然:一个md5总和为128位(16个字节)。由于不同的可能文件内容的数量是无限的,而不同的可能的 md5 和的数量是有限的,因此存在散列冲突的可能性(尽管在大多数情况下概率很小)。换句话说,当使用 md5 散列时,两个不同的文件可以产生相同的总和。
因此,在某些情况下最好使用更高位的哈希(更多可能的不同输出),以降低(已经很低)偶然哈希冲突的概率,并增加通过蛮力创建故意哈希冲突的难度。
较高位散列的示例包括 SHA-2 散列系列,尤其是sha256、sha384、 或sha512(这是最好的)。后面sha的数字表示相应散列算法生成的位数。
| 归档时间: |
|
| 查看次数: |
21379 次 |
| 最近记录: |