哈希值,又名:散列函數是一種從任何類型的數據創建小型數字“指紋”的方法。 哈希函數將消息或數據壓縮成摘要,使數據量更小,并固定數據的格式。 此函數對數據進行混洗并重新創建稱為哈希值的指紋。 哈希值通常由一串隨機字母和數字組成。 好的散列函數在輸入域中很少有散列沖突。 在哈希表和數據處理中,不抑制沖突來區分數據會使數據庫記錄更難找到。
哈希值的性質:
所有哈希函數都具有以下基本性質:如果兩個哈希值不相同(根據同一個函數),那么這兩個哈希值的原始輸入也是 不一樣。
該性質是確定性散列函數的結果,具有該性質的散列函數稱為單向散列函數。 但另一方面,一個哈希函數的輸入和輸出并不是唯一對應的,如果兩個哈希值相同,那么兩個輸入值很可能相同。
但也可以不同,這種情況稱為“哈希沖突”,通常是兩個不同長度的輸入值故意計算出相同的輸出值。
輸入一些數據計算一個哈希值,然后對輸入值進行部分改變,具有強混淆特性的哈希函數會產生完全不同的哈希值。
典型的散列函數具有非常大的域,例如,SHA-2 接受長度為 (2-1)/8 的字節串。 同時,哈希函數必須有一個有限的取值范圍,比如一個固定長度的位串。
在某些情況下,散列函數可以設計為相同大小的域和范圍之間的單射。 散列函數必須是不可逆的。
