Hash(雜湊函式)

2021-09-25 06:39:20 字數 2415 閱讀 9112

hash,一般翻譯做雜湊、雜湊,或音譯為雜湊,是把任意長度的輸入(又叫做預對映pre-image)通過雜湊演算法變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以不可能從雜湊值來確定唯一的輸入值。簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式

若結構中存在和關鍵字k相等的記錄,則必定在f(k)的儲存位置上。由此,不需比較便可直接取得所查記錄。稱這個對應關係f為雜湊函式(hash function),按這個事先建立的表為雜湊表

對不同的關鍵字可能得到同一雜湊位址,即key1≠key2,而f(key1)=f(key2),這種現象稱碰撞。具有相同函式值的關鍵字對該雜湊函式來說稱做同義詞

綜上所述,根據雜湊函式h(key)和處理衝突的方法將一組關鍵字對映到乙個有限的連續的位址集(區間)上,並以關鍵字在位址集中的「象」 作為記錄在表中的儲存位置,這種表便稱為雜湊表,這一映象過程稱為雜湊造表雜湊,所得的儲存位置稱雜湊位址

若對於關鍵字集合中的任乙個關鍵字,經雜湊函式映象到位址集合中任何乙個位址的概率是相等的,則稱此類雜湊函式為均勻雜湊函式(uniform hash function),這就是使關鍵字經過雜湊函式得到乙個「隨機的位址」,從而減少衝突。

所有雜湊函式都有如下乙個基本特性:如果兩個雜湊值是不相同的(根據同一函式),那麼這兩個雜湊值的原始輸入也是不相同的。這個特性是雜湊函式具有確定性的結果。但另一方面,雜湊函式的輸入和輸出不是一一對應的,如果兩個雜湊值相同,兩個輸入值很可能是相同的,但不絕對肯定二者一定相等(可能出現雜湊碰撞)。輸入一些資料計算出雜湊值,然後部分改變輸入值,乙個具有強混淆特性的雜湊函式會產生乙個完全不同的雜湊值。

典型的雜湊函式都有無限定義域,比如任意長度的位元組字串,和有限的值域,比如固定長度的位元串。在某些情況下,雜湊函式可以設計成具有相同大小的定義域和值域間的一一對應。一一對應的雜湊函式也稱為排列。可逆性可以通過使用一系列的對於輸入值的可逆「混合」運算而得到。

hash演算法在資訊保安方面的應用主要體以下的3個方面:

(1)檔案校驗

我們比較熟悉的校驗演算法有奇偶校驗crc校驗,這2種校驗並沒有抗資料篡改的能力,它們一定程度上能檢測並糾正資料傳輸中的通道誤碼,但卻不能防止對資料的惡意破壞。

md5 hash演算法的"數字指紋"特性,使它成為應用最廣泛的一種檔案完整性校驗和(checksum)演算法,不少unix系統有提供計算md5 checksum的命令。

(2)數字簽名

hash 演算法也是現代密碼體系中的乙個重要組成部分。由於非對稱演算法的運算速度較慢,所以在數字簽名協議中,單向雜湊函式扮演了乙個重要的角色。對 hash 值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對檔案本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。

(3) 鑑權協議

如下的鑑權協議又被稱作挑戰–認證模式:在傳輸通道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。以上就是一些關於hash以及其相關的一些基本預備知識。

(1)餘數法:先估計整個雜湊表中的表專案數目大小。然後用這個估計值作為除數去除每個原始值,得到商和餘數。用餘數作為雜湊值。因為這種方法產生衝突的可能性相當大,因此任何搜尋演算法都應該能夠判斷衝突是否發生並提出取代演算法。

(2)摺疊法:這種方法是針對原始值為數字時使用,將原始值分為若干部分,然後將各部分疊加,得到的最後四個數字(或者取其他位數的數字都可以)來作為雜湊值。

(3)基數轉換法:當原始值是數字時,可以將原始值的數制基數轉為乙個不同的數字。例如,可以將十進位制的原始值轉為十六進製制的雜湊值。為了使雜湊值的長度相同,可以省略高位數字。

(4)資料重排法:這種方法只是簡單的將原始值中的資料打亂排序。比如可以將第三位到第六位的數字逆序排列,然後利用重排後的數字作為雜湊值。

雜湊函式並不通用,比如在資料庫中用能夠獲得很好效果的雜湊函式,用在密碼學或錯誤校驗方面就未必可行。在密碼學領域有幾個著名的雜湊函式。這些函式包括md2、md4以及md5,利用雜湊法將數字簽名轉換成的雜湊值稱為資訊摘要(message-digest),另外還有安全雜湊演算法(sha),這是一種標準演算法,能夠生成更大的(60bit)的資訊摘要,有點兒類似於md4演算法。

單向雜湊函式 Hash

1.5 常用的單向雜湊函式 單向雜湊函式 獲取訊息的指紋 在刑事偵查中,偵查員會用到指紋。通過將犯罪現場採集的指紋與指紋庫比對,或與嫌疑人的指紋進行比對,就能夠知道誰與案件有關聯 在計算機中,有時候也會用到 指紋 當需要比較兩條訊息是否一致時,通常不必對訊息內容比較,直接比較它們的 指紋 就行。單向...

Hash 雜湊 雜湊

hash 一種用於查詢的資料結構 雜湊查詢的前提是已經一定的規則方法建好了雜湊表。基本思想是 關鍵字 位址轉換法 以資料物件的關鍵字為自變數,通過乙個確定的函式關係h,計算出對應的函式值h key 把這個值解釋為資料物件的儲存位址,並按此存放,即儲存位置 h key 關鍵 1.構造好的雜湊函式 2....

單向雜湊函式,HASH演算法

md2 md4 message digest algorithm,影響了md5,sha 1等演算法 md5 已被攻破,美國已經不推薦使用。md6 在改進中,因速度問題沒有被sha 3採用。sha 0 被淘汰 sha 1 secure hash algorithm 發現sha 1使用最廣泛,但理論上可...