最近推出的新型非加密雜湊函式 Rain 在開發者社群引發了一場關於現代軟體開發中類密碼學雜湊函式的角色和必要性的有趣討論。雖然 Rain 作為最快的128位和256位非加密雜湊函式展現出令人印象深刻的效能指標,但這場討論揭示了關於雜湊函式設計和實現選擇的更深層次問題。
Rain 的主要特點:
- 最快的128位和256位非加密雜湊演算法
- 程式碼量不到140行
- 透過所有 SMHasher3 測試
- 支援多種輸出大小:64位、128位和256位
- 基於質數的混合函式,具有強大的雪崩特性
效能與安全性的權衡
社群討論突出了一個關於雜湊函式設計的基本問題:在完全加密和純非加密實現之間的雜湊函式,其價值主張是什麼?一些開發者指出,雖然加密雜湊在計算上更耗資源,但對大多數應用來說已經足夠快了。然而,其他人則認為,在特定用例中,效能最佳化的非加密雜湊是有意義的。
實際應用場景
來自社群的一個特別有見地的評論解釋了實際應用:
在某些使用雜湊作為識別符號的應用中,可能無法使用原始資料來解決可能的衝突。一個例子是在 RTTI(執行時型別資訊)中,當你想檢查兩個物件是否是同一型別的例項時...如果發生衝突,程式行為將是未定義的,因此最小化衝突機率是理想的選擇。
技術創新
Rain 的開發過程揭示了雜湊函式設計的有趣見解。該函式使用基於模乘運算下雪崩特性精心選擇的質數。這個選擇過程在現代硬體上需要幾天的計算時間,以確定在最廣可能的位範圍內提供最佳位翻轉機率的質數。
基準測試爭議
社群對已釋出的基準測試的有效性提出了擔憂,特別指出當前的測量似乎主要受啟動時間而非實際雜湊計算的影響。這凸顯了在評估雜湊函式效能時採用適當基準測試方法的重要性。
效能對比( C++ 與 WASM ):
- C++ 實現的效能始終優於 WASM
- 效能差距範圍在4倍到23倍之間
- 在處理1,000,000位元組輸入時觀察到最大效能差異(23倍)
- 在處理100,000,000位元組輸入時觀察到最小效能差異(4倍)
未來展望
討論揭示了關於在主要專案中選擇雜湊函式的持續爭論,包括 Git 的內容定址儲存系統和程式語言實現。雖然 Rain 在某些應用中顯示出前景,但社群強調了根據具體用例選擇合適工具的重要性,而不是採用一刀切的方法。