首页  > 道具图鉴 > 可用于数据完整性和重复数据删除的最佳哈希算法有哪些?

可用于数据完整性和重复数据删除的最佳哈希算法有哪些?

道具图鉴 2025-12-03 08:34:53 2565

你是最正确的。如果您的系统没有任何对手,那么考虑到它们的安全属性,使用密码学哈希函数就显得有些过分了。

冲突取决于散列函数的位数,b,以及您估计要计算的散列值的位数,N。学术文献认为,这种冲突概率必须低于硬件错误概率,因此与逐字节比较数据[ref1,ref2,ref3,ref4,ref5]相比,与散列函数发生冲突的可能性更小。硬件错误概率在2^-12和2^-15 [ref6]范围内。如果您希望生成N=2^q散列值,那么您的冲突概率可能由以下公式给出,该公式已经考虑了birthday paradox

散列函数的位数与它的计算复杂度成正比。所以你感兴趣的是找到一个具有尽可能最小位数的散列函数,同时能够将冲突概率保持在可接受的值。

这里有一个关于如何进行分析的例子:

假设您有f__=2^15文件;每个文件的平均大小lf为2^20字节;您假装将每个文件划分为平均大小等于2^10字节的区块lc;每个文件将被划分为c__=lf/lc=2^10个区块;然后您将散列q = f*c =2^25个对象。

根据该方程,几种散列大小的冲突概率如下:

P(hash=64位)= 2^(2*25-64+1) = 2^-13 (小于位)= 2^(2*25-128+1) 2^-77 (远小于2^-12)

现在你只需要决定使用64位还是128位的非加密哈希函数,知道64位的哈希函数非常接近硬件错误概率(但会更快),而128位是一个更安全的选择(尽管更慢)。

下面你可以找到一个从维基百科中删除的非密码学哈希函数的小列表。我知道Murmurhash3,它比任何密码散列函数都快得多:

Fowler–Noll–Vo:32、64、128、256、512和1024 bitsJenkins:64和128 bitsMurmurHash:32、64、128和160 bitsCityHash:64、128和256位


友情链接:
Copyright © 2015 BOSS网游 - 高价值游戏活动发现中心 All Rights Reserved.