【问题标题】:Best hashing algorithm for file detection文件检测的最佳哈希算法
【发布时间】:2012-01-01 17:58:16
【问题描述】:

我希望能够通过 PHP 定期验证大量文件(几 TB)。安全性不是问题,冲突也不是特别大的问题,因为它也会影响文件大小。主要目标是使用尽可能少的 CPU 快速生成哈希。

我目前的候选人是 md5_file() 但想知道是否有另一种更有效的方法?

【问题讨论】:

  • 你可能受到磁盘IO的限制,所以我猜算法选择无关紧要......(虽然我没有检查过!)

标签: php md5 checksum


【解决方案1】:

如果效率是一个问题而安全性不是问题,那么简单地对文件进行二进制 XOR 怎么样?更快。

【讨论】:

  • 是吗?如果数据已经在内存中,我可以理解它会更快,但是我们在这里从磁盘读取数据......
  • 任何类型的哈希都需要读取数据。 MD5(或任何其他强哈希)会增加 CPU 成本。
  • 大部分 CPU 时间将与磁盘访问并行发生(在合理的实现中)。我不知道md5_file 是不是一个明智的实现...
  • 也许会,但问题是关于最小化 CPU 时间。如果(似乎是合理的)真正的问题是在这些 TB 数据位于物理硬盘驱动器的环境中最小化时钟时间,是的,散列的成本可能可以忽略不计。
【解决方案2】:

不要将 PHP 用于此类事情。使用Tripwire等专用工具。

【讨论】:

    【解决方案3】:

    我认为 sha1 可能是你最好的选择,在 php 中你会使用 sha1_file

    【讨论】:

    • 你的任务更多是 io 绑定的,所以我不明白为什么要放松一点你会获得处理稍慢的 sha1。但是我不知道您是否需要这些 CPU 资源来执行更高优先级的任务
    猜你喜欢
    • 2017-04-03
    • 2011-05-16
    • 2010-10-19
    • 2023-04-02
    • 2020-08-26
    • 2021-09-02
    • 2010-09-20
    • 2016-04-29
    相关资源
    最近更新 更多