Google發布FarmHash,一個新的用于字符串的哈希函數系列
英文原文:Google publishes FarmHash, a new family of hash functions for strings
Google 剛剛發布了 FarmHash,一個新的用于字符串的哈希函數系列。FarmHash 從 CityHash 繼承了許多技巧和技術,是它的后繼。FarmHash 有多個目標,聲稱從多個方面改進了 CityHash。
Geoff Pike 是 Google 的軟件工程師,該庫由他和 Jyrki Alakuijala 共同編寫。根據他的報道,雖然 FarmHash 的開發一直受到 Google 數據中心里常見的 CPU 類型影響,但該庫的目標之一是使開發人員可以快速便捷地將其應用在電話、平板電腦以及臺式電腦上。正是因為這個原因,他們已經改進了現有的 32 和 64 位哈希實現。
Geoff 寫道,與 CityHash 相比,FarmHash 的另一項改進是在多個特定于平臺的實現之上提供了一個接口。這樣,當開發人員只是想要一個用于哈希表的、快速健壯的哈希函數,而不需要在每個平臺上都一樣時,FarmHash 也能滿足要求。
考慮了上述所有內容,FarmHash 的實現代碼達到了大約 1500 行(不包括測試相關的代碼),相比之下,CityHash 的代碼大約為 600 行。讀者可以在這里找到 CityHash 的全面分析。
目前,FarmHash 只包含在 32、64 和 128 位平臺上用于字節數組的哈希函數。未來開發計劃包含了對整數、元組和其它數據的支持。
CityHash 的哈希算法被發現容易受到針對算法漏洞的攻擊,該漏洞允許多個哈希沖突發生(哈希泛濫)。盡管沒有已知的 CityHash 漏洞利用程序,但這類攻擊能夠很快地讓用了這種哈希算法的任何應用程序過載。該漏洞還影響了其它基于 MurmurHash 的主要哈希實現。目前還不清楚 FarmHash 是否能夠免受相同漏洞的影響。