① 什麼是Hash函數
Hash函數是把任意長度的輸入(又叫做預映射pre-image)通過散列演算法變換成固定長度的輸出,該輸出就是散列值。
這種轉換是一種壓縮映射,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來確定唯一的輸入值。
Hash函數可以將一個數據轉換為一個標志,這個標志和源數據的每一個位元組都有十分緊密的關系。Hash演算法還具有一個特點,就是很難找到逆向規律。
(1)壓縮映射的應用擴展閱讀:
常用Hash函數有:
1、直接定址法。取關鍵字或關鍵字的某個線性函數值為散列地址。即H(key)=key或H(key) = a·key + b,其中a和b為常數(這種散列函數叫做自身函數)
2、數字分析法。分析一組數據,比如一組員工的出生年月日,這時我們發現出生年月日的前幾位數字大體相同。
3、平方取中法。取關鍵字平方後的中間幾位作為散列地址。
4、 折疊法。將關鍵字分割成位數相同的幾部分,最後一部分位數可以不同,然後取這幾部分的疊加和(去除進位)作為散列地址。