第二十一節-雜湊演算法(上)
什麼是雜湊演算法
將任意長度的二進位制值串對映成固定長度的二進位制值串,這個對映規則就是雜湊演算法,而通過原始資料對映之後得到的二進位制值串就是雜湊值。
雜湊演算法的幾點要求
- 單向性
從雜湊值不能推出原始資料
- 雪崩性
對輸入資料非常敏感,哪怕原始資料只修改了一個 Bit,最後得到的雜湊值也有接近一半的位數發生變化
- 抗弱碰撞性
雜湊衝突的概率非常小,之所以不能說是完全不衝突,鴿巢原理解釋了這一點。
- 高效性
能快速計算出輸入資料的雜湊值
應用
一、安全加密
對於加密的雜湊演算法來說,有兩點格外重要:
- 不可逆推性
不過不必追求絕對不可逆推,只要達到足夠的不可逆推要求即可。
- 抗碰撞性
這個要儘可能追求,只要機率極小即可,無法做到絕對,畢竟上面說過了鴿巢原理說明了不存在絕對的兩個不同輸入不產生相同的輸出。
二、唯一標識
比如根據雜湊值查詢庫中是否已經有了相同的圖片、視訊。git 中也使用了 SHA 來標識檔案版本和追蹤檔案。
三、資料校驗
CRC 演算法其實就是一種保證資料安全雜湊資料校驗。。。實際中,我們也可以在 BT 協議中使用雜湊演算法對每塊資料進行資料校驗,只儲存正確資料塊。
四、雜湊函式
作為雜湊表的雜湊函式,它直接決定了雜湊衝突的概率和雜湊表的效能。
相對於雜湊函式的其他應用,雜湊函式的要求比較低,即使出現個別雜湊衝突,只要不太嚴重,也是可以開放定址法和連結串列法解決的。
雜湊函式更關注一組資料能否均勻分佈在各個槽中和計算雜湊值的效率。
相關文章
- 3.1 雜湊演算法演算法
- 雜湊技術【雜湊表】查詢演算法 PHP 版演算法PHP
- 淺析雜湊演算法演算法
- 雜湊演算法簡介演算法
- 雜湊查詢演算法演算法
- 超酷演算法:同型雜湊演算法
- 演算法學習-雜湊表演算法
- 22 | 雜湊演算法(下):雜湊演算法在分散式系統中有哪些應用?演算法分散式
- 【六褘-Java】雜湊演算法記憶體圖;set集合低層採用雜湊表儲存元素;雜湊演算法的流程Java演算法記憶體
- js 雜湊雜湊值的模組JS
- 雜湊表(雜湊表)詳解
- 你知道雜湊演算法,但你知道一致性雜湊嗎?演算法
- 【資料結構與演算法學習】雜湊表(Hash Table,雜湊表)資料結構演算法
- 查詢演算法及雜湊表演算法
- MD5雜湊加密演算法加密演算法
- 雜湊
- 雜湊表(雜湊表)原理詳解
- 【尋跡#3】 雜湊與雜湊表
- 什麼是雜湊演算法?雜湊競猜遊戲開發原理詳解演算法遊戲開發
- 資料結構第十一節(雜湊表)資料結構
- 一致性雜湊演算法演算法
- 雜湊演算法生存狀況報告演算法
- 【演算法】9 雜湊表【待補充】演算法
- 查詢(3)--雜湊表(雜湊查詢)
- 樹雜湊
- 雜湊碰撞
- 字串雜湊字串
- 雜湊表
- 雜湊對映用法及演算法例題演算法
- 資料結構與演算法分析 (雜湊)資料結構演算法
- javascript資料結構與演算法--雜湊JavaScript資料結構演算法
- 演算法與資料結構——雜湊表演算法資料結構
- RIPEMD演算法:多功能雜湊演算法的瑰寶演算法
- 資料結構與演算法——雜湊表類的C++實現(探測雜湊表)資料結構演算法C++
- 雜湊函式函式
- 字串雜湊表字串
- redis之雜湊Redis
- 雜湊連線