資料結構學習筆記七(雜湊演算法)

2021-09-05 09:49:31 字數 1160 閱讀 5234

一、什麼是雜湊演算法

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

雜湊演算法需要滿足的要求:

二、雜湊演算法的應用

雜湊演算法的應用非常廣泛,主要有安全加密、唯一標識、資料校驗、雜湊函式、負載均衡、資料分片、分布式儲存等。

1.安全加密

最常用於加密的雜湊演算法是md5(md5訊息摘要演算法)和sha(secure hash algorithm),除了這兩個之外,還有其他演算法,比如des(data encryption standard),aes(advanced encryption standard)等。

2.唯一標識

如果要在海量的相簿中,搜尋一張圖是否存在, 不能單純地用名稱來比對,因為有可能存在名稱相同但內容不同的情況。為解決這種問題,可以用雜湊演算法。我們可以給每乙個取乙個唯一標識,比如,我們可以從二進位製碼串開頭取100個位元組,從中間取100個位元組,從最後再取100個位元組,然後將這300個位元組放到一塊,通過雜湊演算法(比如md5),得到乙個雜湊字串,用它作為的唯一標識。通過這個唯一標識來判定是否在相簿中,這樣就可以減少很多任務作量。

3.資料校驗

雜湊函式也是雜湊演算法的一種應用。雜湊函式是設計乙個雜湊表的關鍵,它直接決定了雜湊衝突的概率和雜湊表的效能。不過相對於雜湊演算法的其他應用,雜湊函式對雜湊演算法衝突的要求低得多。雜湊函式對於雜湊演算法得到的值是否能反解也並不關心,雜湊函式中用到的雜湊演算法更加關注雜湊後的值能否平均分布。

5.負載均衡

6.資料分片

7.分布式儲存

三、如何防止資料庫中的使用者資訊被脫庫?

如果使用者資訊被「脫庫」,黑客雖然拿到的是加密之後的密文,但可以根據「猜」的方式來破解密碼。維護乙個常用密碼的字典表(比如000000,123456),把字典中的每個密碼用雜湊演算法計算雜湊值,然後拿雜湊值跟脫庫後的密文比對。如果相同,基本上就可以認為,這個加密之後的密碼對應的就是字典中的那個密碼。

針對字典攻擊,我們可以引入乙個鹽(salt),更使用者的密碼組合在一起,增加密碼的複雜度。我們拿組合之後的字串做雜湊演算法加密,將它儲存到資料庫中,進一步增加破解的難度。

《演算法與資料結構》學習筆記18 雜湊演算法

啊,繼續學習之旅。前面幾篇提到 雜湊表 雜湊函式 這裡又講到 雜湊演算法 是不是有點一頭霧水?實際上,不管是 雜湊 還是 雜湊 這都是中文翻譯的差別,英文其實就是 hash 所以,常聽到有人把 雜湊表 叫作 雜湊表 hash 表 把 雜湊演算法 叫作 hash 演算法 或者 雜湊演算法 什麼是雜湊演...

資料結構學習筆記 雜湊表

1.什麼是雜湊表 1 雜湊表是從乙個集合a到另乙個集合b的對映。2 集合a中的元素稱為鍵值,集合b中的元素稱為hash值。3 對映在數學上相當於乙個函式,集合a中的元素如何對映到集合b,hash函式決定。4 若兩個不同的鍵值對應同乙個hash值,這種情況為hash碰撞。2.雜湊與查詢 設集合a為查詢...

演算法和資料結構學習筆記

演算法和資料結構就是程式設計的乙個重要部分,你若失掉了演算法和資料結構,你就把一切都失掉了。一 資料結構和演算法緒論 說說資料結構 程式設計 資料結構 演算法 再簡單來說,資料結構就是關係,也就是資料元素相互之間存在的一種或多種特定關係的集合。資料結構的分類 傳統上,我們把資料結構分為邏輯結構和物理...