2012-08-08 30 views
0

我想用MurmurHash3唯一標識大塊數據。此實現:MurmurHash3可以在多個部分散列一塊數據(增量式)嗎?

http://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.h

似乎並沒有提供一種方式來逐步更新哈希,雖然 - 它似乎計算每給定的數據塊中的一個單獨的散。例如,如果我從磁盤散列512MB數據,我可能不希望一次將所有數據加載到內存中,或者如果我從網絡散列未知數量的數據。有沒有人曾經在這種情況下使用過MurmurHash3(逐漸散列大量數據)?如果你能指點我一些資源或替代實現,那將是很棒的:)。我正在尋找類似於OpenSSL的SHA256_Update的東西。

謝謝!

回答

4
+0

謝謝夢露!你碰巧知道128位散列的實現嗎? – fyhuang 2012-08-09 06:48:52

+0

@fyhuang你應該能夠跟隨PMurHash.c相同的模式很容易,從128位版本替換數據類型和代碼。祝你好運! – 2012-08-09 15:08:58

+1

正確,後https://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp#319什麼(線319)將是你'CalculateFinalHash'實現的一部分。在它之前的每個塊需要做的事情(你需要在調用之間存儲'h1','h2'和'length')。另外請注意,您不需要實際傳遞數據塊長度(或多個數據),它可以處理任何長度的數據。事實上,我發現使用更多數據的速度更快(由於這個緊密的循環) - 所以我選擇了OS頁面 - 使塊變長。 – 2013-05-29 12:30:47

相關問題