什么哈希算法用于快速文件哈希?

Cup*_*Tea 0 c++ hash

正如标题所说,我正在寻找的是最好的常见哈希算法.散列10mb左右的文件应该相对较快,并且应该尽可能安全以避免冲突.

此外,可以理解到C++实现的链接,最好是具有允许其在免费但闭源应用程序中使用的许可证的链接,并且如果可能的话,还可以使用付费的闭源应用程序.

yzt*_*yzt 7

我会说,当散列文件时,你的瓶颈很可能是文件I/O而不是散列算法本身.显然,除非你选择一个非常慢的哈希算法(我知道在主流使用中没有那么慢)或者你的硬件非常不寻常和特殊,否则这个观察就会成立.

为了给你一些(非常不准确的)数字,加密哈希算法的大多数好的实现(可能比你需要的强得多)运行在几百兆字节或几千兆字节/秒,但大多数常见的磁盘系统运行数十每秒兆字节或几百兆字节.

请注意,在这些(非常粗略的)数字中,我忽略了文件系统和操作系统的开销,而且我假设您将使用加密哈希算法(通常比较简单的算法慢).

总而言之,我的建议是你只选择像MD5或SHA-1或SHA-256(这些都是加密哈希)这样的东西,它们有很多好的,快速的和免费的实现,并且几乎可以消除任何碰撞的机会.而不是选择快速但劣质的哈希算法,优化您的I/O(通过对文件进行异步/非阻塞读取),因为这是瓶颈所在.

以下是一些用于实现各种哈希函数的C/C++加密库,并且具有适合您的用例的许可证:

  1. 加密+
  2. 牡丹
  3. OpenSSL的