2012-01-01 49 views
3

我希望能夠通過PHP定期驗證大量文件(幾TB)。安全性不是問題,碰撞也不是特別大,因爲它也是文件大小的因素。主要目標是快速生成哈希,並儘可能使用盡可能少的CPU。用於文件檢測的最佳散列算法

我目前的候選人是md5_file(),但想知道是否有另一種方法可以更有效?

+1

您可能受磁盤IO限制,所以我猜想算法選擇無關緊要(雖然我沒有檢查!) – 2012-01-01 18:04:39

回答

1

如果效率是一個問題,安全不是,怎麼樣簡單的文件的二進制XOR?快多了。

+0

是嗎?如果數據已經在內存中,我可以理解它會更快,但是我們正在從磁盤讀取數據...... – 2012-01-01 19:04:39

+0

任何類型的散列都需要*讀取數據*。 MD5(或任何其他強大的散列)會增加CPU的成本。 – Malvolio 2012-01-01 20:35:15

+0

大部分CPU時間將與磁盤訪問並行(在一個合理的實現中)。我不知道'md5_file'是否是一個明智的實現... – 2012-01-01 20:41:36

-1

我認爲SHA1可能是你最好的選擇,在PHP中你會使用sha1_file

+4

是不是SHA1比MD5慢? – Meep3D 2012-01-01 18:02:54

+0

你的任務是更多的Io綁定,所以我不明白爲什麼要放鬆一點點,你會得到處理稍慢的sha1。但是我不知道你是否需要這個cpu資源來執行更高優先級的任務 – 2012-01-02 08:43:24

0

不要將PHP用於這種事情。使用專用工具,如Tripwire