Hash MD5是否仍然足以唯一地标识文件?

Hash MD5是否仍然足以唯一地标识文件?,hash,md5,Hash,Md5,考虑到MD5算法的所有缺陷和安全问题等,MD5散列文件仍然被认为是唯一识别它的足够好的方法吗?在这里,安全性不是我主要关心的问题,但是唯一地标识每个文件是非常重要的 有什么想法吗?有。从安全角度来看,MD5已经完全被破坏,但意外碰撞的概率仍然非常小。只要确保文件不是由你不信任的人创建的,他可能有恶意意图。MD5已被破坏,你可以使用SHA1(用大多数语言实现)我个人认为人们使用原始校验和(选择你的方法)当其他对象真正想做的事情是拥有唯一标识符时,它们太多地充当唯一标识符。为此目的对对象进行指纹识别

考虑到MD5算法的所有缺陷和安全问题等,MD5散列文件仍然被认为是唯一识别它的足够好的方法吗?在这里,安全性不是我主要关心的问题,但是唯一地标识每个文件是非常重要的


有什么想法吗?

有。从安全角度来看,MD5已经完全被破坏,但意外碰撞的概率仍然非常小。只要确保文件不是由你不信任的人创建的,他可能有恶意意图。

MD5已被破坏,你可以使用SHA1(用大多数语言实现)

我个人认为人们使用原始校验和(选择你的方法)当其他对象真正想做的事情是拥有唯一标识符时,它们太多地充当唯一标识符。为此目的对对象进行指纹识别并非本意,与使用uuid或类似完整性机制相比,可能需要更多的思考。

出于实际目的,创建的哈希可能是适当随机的,但从理论上讲,由于以下原因,始终存在冲突的可能性。拥有不同的散列肯定意味着文件是不同的,但获得相同的散列并不一定意味着文件是相同的


因此,为此目的使用哈希函数——无论安全性是否值得关注——应该始终只是检查的第一步,特别是已知哈希算法容易产生冲突的情况下。要可靠地查明具有相同哈希的两个文件是否不同,您必须逐字节比较这些文件。

如果没有对手,MD5就足够了。但是,有人可以(有目的地)创建两个不同的文件,它们散列到相同的值(称为冲突),这可能是问题,也可能不是问题,具体取决于您的具体情况


因为知道已知的MD5弱点是否适用于给定的上下文是一件微妙的事情,所以建议不要使用MD5。使用抗冲突哈希函数(SHA-256或SHA-512)是安全的答案。此外,使用MD5会造成不良的公共关系(如果您使用MD5,请准备好为自己辩护;而没有人会质疑您使用SHA-256)。

MD5会产生冲突。从理论上讲,虽然不太可能,但一行一百万个文件可以产生相同的散列。在存储值之前,不要测试您的运气并检查md5冲突

我个人喜欢创建随机字符串的md5,这样可以减少散列大文件的开销。当发现冲突时,我迭代并使用附加的循环计数器重新散列


你可以在网上阅读。

我不推荐。如果应用程序可以在多用户系统上工作,那么可能会有一个用户,这将有两个具有相同md5哈希的文件(他可能是工程师,并使用这些文件,或者只是好奇——它们很容易从下载,我自己在写这个答案时下载了两个示例)。另一件事是,有些应用程序可能出于任何原因存储这样的副本(我不确定是否有这样的应用程序,但这种可能性是存在的)

如果您是唯一标识由您的程序生成的文件,我会说可以使用MD5。否则,我建议使用任何其他尚不存在冲突的哈希函数。

对短( 要检查冲突,可以对数据库中所有位向量的md5哈希键的唯一性运行此测试:

选择md5(位向量)、计数(*)、位向量和(位向量) 从具有位向量的db开始
按md5(位向量)分组,位向量
拥有bit_和(bit_vector)bit_vector时,我喜欢将MD5视为存储大量文件数据时的概率指标


如果散列相等,我就知道我必须逐字节比较文件,但由于错误的原因,这种情况可能只会发生几次,否则(散列不相等),我可以确定我们谈论的是两个不同的文件。

我实际上正在我的一个应用程序中使用它,据我所知,它足以唯一地识别文件。你可能会发现这个问题:有用。你需要识别多少文件?它输出128位,因此,如果您试图识别数千个文件,就可以了。但是,如果你试图识别更多的内容,你可能会遇到冲突/生日悖论。它们将是图像文件、jpg、png和gif。是的,我想上限是几千。。。但你大概认为有多少文件会给我带来麻烦?相关:@none:关于你的第一个问题,请参阅。恐怕我不明白其他的问题。@0xA3:你和我都不知道OP指的是什么文件,也不知道妥协会造成多大的损害。据我们所知,这可能是他们孩子的婴儿照片集。我的目标是提供事实;别人对他们做什么是他们的事。还要考虑Bruce Schneier写下你的密码;并非所有东西都需要存放在诺克斯堡。“有些东西放在花盆下面会很好的。”马塞洛·坎托斯说