雜湊演算法相關梳理

2021-09-10 15:27:53 字數 1280 閱讀 8538

1.基本概念

雜湊也成為「雜湊」:任意長度的輸入,經過雜湊演算法變換成固定長度的輸出。

雜湊值會產生碰撞,因為固定長度的雜湊值表示的範圍是有限的,但輸入值的範圍是無限的。

通過原始資料通過相同的雜湊演算法可以計算出相同的雜湊值,但是通過雜湊值無法恢復原始資料

不同的雜湊演算法,雜湊值長度不同,但相同的雜湊演算法,雜湊值長度固定。雜湊值的長度越長越安全。(出現碰撞的概率越低)

2.常用的雜湊演算法

最簡單的雜湊演算法就是取模運算。比如共有10個數,對9取模,則1至9對9取模的結果分別為1,2,3,4,5,6,7,8,9。10對9取模的結果為1,則1和10經過該雜湊運算後結果發生碰撞。

常用的雜湊演算法包括:md5、sha-1、sha-2等,目前除了sha-2以外,其他演算法都產生過碰撞。

3.雜湊演算法的用途

可用於:檔案校驗(驗證兩個檔案是否為同乙個檔案)、數字簽名、鑑權協議等。

4.一致性雜湊演算法

4.1 要解決什麼問題?

在網際網路中經常需要對伺服器擴容,比如之前有5臺伺服器,現在要擴容到6臺。如果有個資料儲存在伺服器1(假設資料對5取模結果為n就儲存在第n臺伺服器)    ,當伺服器從5臺擴容至6臺,則資料請求將對6取模,其結果將和5取模完全不同,導致快取伺服器全部失效,所有資料都需要直接命中資料庫,然後重新快取,造成大量的效能浪費。為解決這個問題而形成了一致性雜湊演算法。

4.2 一致性雜湊演算法的概念

1)將所有快取資料的雜湊值對映到乙個圓環上,對應快取伺服器雜湊值也對映到該圓環上。

2)計算所要快取的資料的雜湊值並在該環上對映,然後順時針查詢到的第乙個快取伺服器,然後就在這個伺服器上快取該資料。假設有5個快取伺服器,分別處於圓環的pos1~5。要快取的資料雜湊值對映在圓環上,並順時針查詢到伺服器3,則該資料快取至伺服器3

3)  在請求資料時,現在快取伺服器中查詢。計算要請求的資料的雜湊值,並應設在圓環上。順時針查詢第乙個伺服器得到伺服器3,則在該伺服器中查詢快取資料。如果沒有再查詢服務端資料庫。

4)伺服器擴容,增加伺服器6,雜湊值的位置在伺服器2和伺服器3之間,位置為pos6。在此查詢相同的資料,如果該資料的雜湊值對映在pos6和pos3之間,則依然可以順時針找到伺服器3,並從伺服器3中查詢資料。快取的資料不會失效。如果該資料的雜湊值對映在pos2和pos6之間,則順時針找到的是伺服器6,而不是之前快取該資料的伺服器3,則在伺服器6上不會找到該資料。這樣該資料的快取就失效了。

通過上述一致性雜湊演算法,可以大大降低伺服器擴容造成的損失。現在可通過將一台伺服器虛擬出多個虛擬伺服器並對映在圓環上來答覆降低擴容損失。

由於個人的理解優先,希望大家批評指正。

排序演算法相關

1.1氣泡排序 氣泡排序的基本原理是 依次比較相鄰的兩個數,將大數放在前面,小數放在後面,也即首先比較第乙個和第二個數,將大數放在前面,小數放在後面。然後比較第2個數和第3個數,將大數放前,小數方後,依次直至比較最後兩個數。如此在第一輪最後的數必定是所有數中最小的,然後重複以上過程將所有小數放在最後...

演算法相關概念解釋

演算法 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。演算法的特性 有窮性,確定性,可行性,輸入,輸出。演算法的設計要求 正確性,可讀性,健壯性,高效率和低儲存。演算法的度量方法 事後統計法 不科學,不準確 事前分析估計法。輸入輸出 演算法有零個...

進化演算法相關概念

進化演算法是為了克服傳統優化方法的缺點而設計的一類演算法。為了解決目標函式的導數不存在或無法求得,但又要求函式的全域性最優解的問題。進化演算法是模擬生物進化或遺傳原理而設計的一類隨機搜尋的優化演算法,屬於不確定優化方法。進化演算法是以達爾文的演化論為基礎,模仿自然界 優勝劣汰 適者生存 的優化過程對...