Tim*_*dge 3 language-agnostic algorithm hash
我正在编写一个使用散列来加快文件比较的应用程序。基本上,我先对文件A进行哈希处理,然后该应用程序运行并匹配文件夹中的文件与先前哈希的文件。我目前寻找散列函数的标准如下:
因此,这里使用的是一种好的算法,我正在使用C#,但是我确定大多数算法都可以在任何平台上使用。就像我说的那样,我正在使用SHA-256,但是我敢肯定还有更好的选择。
Yann Collet的xxHash可能是一个不错的选择(主页,GitHub)
xxHash是一种非常快速的非加密哈希算法,其工作速度接近RAM限制。提出了32位和64位两种样式。
至少有4个C#实现(请参见首页)。
过去,我取得了出色的成绩。
哈希大小为32或64位,但是XXH3正在生成:
XXH3具有512位的较宽内部状态,这使其适合生成高达256位的哈希。目前,仅公开64位和128位变体,但是如果有一天需要,可以对256位变体使用类似的配方。所有变体都具有相同的速度,因为只有完成阶段不同。
通常,哈希值越长,其计算速度就越慢。64位哈希足以满足大多数实际用途。
您可以通过组合两个哈希函数(例如128位XXH3和128位MurmurHash3)来生成更长的哈希。