首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对大文件和512KB区块的最快和LightWeight散列算法[C、Linux、MAC、Windows]

针对大文件和512KB区块的最快和LightWeight散列算法[C、Linux、MAC、Windows]
EN

Stack Overflow用户
提问于 2012-11-30 21:50:57
回答 3查看 2.7K关注 0票数 2

我正在从事一个项目,其中涉及文件的哈希计算。该项目就像一个文件备份服务,所以当一个文件从客户端上传到服务器时,我需要检查该文件在服务器上是否已经可用。我为文件生成CRC-32哈希,然后将哈希发送到服务器以检查它是否已经可用。

如果文件不在服务器中,我过去会将文件作为512 KB区块发送以进行重复数据消除,并且我必须计算每个512 KB区块的哈希值。文件大小有时可能只有几GB,并且多个客户端将连接到服务器。所以我真的需要一个文件的快速和LightWeight散列算法。有什么想法吗?

附注:我已经注意到StackOverflow中的一些散列算法问题,但答案并不是对这类任务所需的散列算法进行比较。我敢打赌,这对很多人都很有用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-13 01:08:28

实际上,CRC32既没有最好的速度,也没有最好的发行版。

这是意料之中的:按照今天的标准,CRC32已经相当老了,创建于CPU不是32/64位宽也不是OoO-Ex的时代,分布属性也没有错误检测那么重要。自那以后,所有这些要求都发生了变化。

为了评估散列算法的速度和分布特性,Austin Appleby创建了优秀的SMHasher包。结果的简短摘要是presented here。我建议选择Q.Score为10 (完美分布)的算法。

票数 2
EN

Stack Overflow用户

发布于 2012-11-30 22:33:38

您说您正在使用CRC-32,但是想要更快的散列。CRC-32非常基础,而且速度非常快。我认为I/O时间会比散列时间长得多。您还需要一个不会发生冲突的散列。也就是说,两个不同的文件或512 KB区块获得相同的散列值。您可以查看任何加密散列,如MD5 (不要用于安全应用程序)或SHA1。

票数 0
EN

Stack Overflow用户

发布于 2015-01-04 15:17:01

如果只使用crc-32检查文件是否重复,则会得到错误的副本,因为不同的文件可能具有相同的CRC-32。你最好使用sha-1,crc-32和md5都太弱了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13646574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档