Hash演算法

weixin_34321977發表於2018-11-20

資料結構與演算法分析:大綱
資料結構:陣列
演算法:hash演算法
演算法:排序演算法Java實現

1 Hash演算法?

將任意長度的二進位制串對映為固定長度的二進位制值串的對映規則就是Hash演算法。通過原始資料對映之後得到的二進位制串就是hash值。

  • 需要滿足的要求
  1. hash值非常困難的反向推匯出原始資料。
  2. 輸入資料敏感,原始資料只修改了一個bit,最後的hash值也大不相同。
  3. 雜湊衝突的概率很小,對於不同的原始資料,hash值相同的概率非常小。
  4. hash演算法的執行效率要儘量高效,針對長文字也能很快計算出hash值。

雀巢原理:有10個鴿巢,有11個鴿子,那肯定有1個鴿巢中的鴿子數量多於1。

所以對於定長的二進位制串肯定會存在hash值相同。無法做到零衝突。

2 應用:安全加密

MD5+SHA

3 應用:唯一標識

對資訊摘要進行Hash

通過比對hash值是否相同來判斷是否同一個檔案。

4 應用:資料校驗

電驢分段下載

5 應用:雜湊函式

6 應用:負載均衡

同一個客戶端在一次會話中的所有請求都路由到一個伺服器上。

Hash(ip+sessionId)%伺服器個數

7 應用:資料分片

海量資料-->hash分片-->單臺機器-->彙總結果

8 應用:分散式儲存

一致性Hash解決分散式儲存結構下動態增加和刪除節點所帶來的問題。

https://en.wikipedia.org/wiki/Consistent_hashing

相關文章