哪种哈希算法可用于重复内容验证?

cod*_*ing 9 java hash md5

我有一个xml文件,我需要确定它是否重复.

我将散列整个xml文件,或者将使用xml文件中的特定xml节点生成某种散列.

md5适合这个吗?

或者是其他东西?生成散列的速度也相当重要,但为唯一数据生成唯一散列的保证更为重要.

Nul*_*ion 8

MD5被破坏(在某种意义上可能会故意产生哈希冲突),如果您担心某人恶意创建具有相同哈希的文件,您应该使用SHA系列(例如:SHA-256或SHA-2)作为另一个文件.


请注意,哈希函数本质上不能保证每个可能输入的唯一哈希值.散列函数的长度有限(例如:MD5长度为128位,因此有2 128个可能的散列).您无法将潜在的无限域映射到有限的共域,这在数学上是不可能的.

然而,根据生日悖论,良好散列函数中的碰撞机会是1 in 2 n/2,其中n是以位为单位的长度.(例如:使用128位MD5,即2 64).这在统计上是微不足道的,你不必担心意外发生碰撞.


che*_*vim 4

MD5 合适且快速。但请注意,一个字符中的一个差异将产生完全不同的 MD5。

MD5 有可能为不同的输入生成相同的哈希值。这将是非常罕见的。因此,根据您的输入(您期望许多相似的 XML 还是许多不同的 XML?),当 MD5 为您提供肯定匹配时,您可以比较纯字符串内容。