【发布时间】:2015-04-23 23:44:17
【问题描述】:
我正在使用 SHA-1 来检测程序处理文件中的重复项。它不需要是加密强的,并且可能是可逆的。我找到了这个快速哈希函数列表https://code.google.com/p/xxhash/
如果我想要在 SHA-1 附近的随机数据上获得更快的函数和冲突,我应该选择什么?
也许 128 位散列足以用于文件重复数据删除? (与 160 位 sha-1 相比)
在我的程序中,哈希是根据 0 - 512 KB 的块计算的。
【问题讨论】:
-
使用 git 使用的那个。如果对 git 足够好,对你也足够好!
-
Git 使用 SHA-1,Git 工作流程的“热循环”显然不是 Git 提交。 OP 和我对可用于 ~hot 循环的哈希函数(例如考虑内存数据库)感兴趣,并提供非常强大的冲突保证和位独立性等。
-
CPU“快速”可能无关紧要——I/O 可能几乎是所有经过的时间。
-
granted.but 考虑重新散列一个 in-mem k/v。但你说得有道理。
-
@Stig 你看过 Blake2B 吗? blake2.net C 版本与 MD5 一样快,并且是加密的。我写了一个 Java 版本,但我无法让它比 SHA-1 更快。 github.com/alphazero/blake2b
标签: performance hash sha murmurhash