散列函式簡介
又稱hash函式,Hash函式(也稱雜湊函式或雜湊算法)就是把任意長的輸入訊息串變化成固定長的輸出串的一種函式。這個輸出串稱為該訊息的雜湊值。一般用於產生訊息摘要,密鑰加密等.
一個安全的雜湊函式應該至少滿足以下幾個條件:
①輸入長度是任意的;
②輸出長度是固定的,根據目前的計算技術應至少取128bits長,以便抵抗生日攻擊;
③對每一個給定的輸入,計算輸出即雜湊值是很容易的
④給定雜湊函式的描述,找到兩個不同的輸入訊息雜湊到同一個值是計算上不可行的,或給定雜湊函式的描述和一個隨機選擇的訊息,找到另一個與該訊息不同的訊息使得它們雜湊到同一個值是計算上不可行的。
Hash函式主要用於完整性校驗和提高數字簽名的有效性,目前已有很多方案。這些算法都是偽隨機函式,任何雜湊值都是等可能的。輸出並不以可辨別的方式依賴於輸入;在任何輸入串中單個比特的變化,將會導致輸出比特串中大約一半的比特發生變化。
常見散列函式(Hash函式)
·MD5(Message Digest Algorithm 5):是RSA數據安全公司開發的一種單向散列算法,MD5被廣泛使用,可以用來把不同長度的數據塊進行暗碼運算成一個128位的數值;
·SHA(Secure Hash Algorithm)這是一種較新的散列算法,可以對任意長度的數據運算生成一個160位的數值;
·MAC(Message Authentication Code):訊息認證代碼,是一種使用密鑰的單向函式,可以用它們在系統上或用戶之間認證檔案或訊息。HMAC(用於訊息認證的密鑰散列法)就是這種函式的一個例子。
·CRC(Cyclic Redundancy Check):循環冗餘校驗碼,CRC校驗由於實現簡單,檢錯能力強,被廣泛使用在各種數據校驗套用中。占用系統資源少,用軟硬體均能實現,是進行數據傳輸差錯檢測地一種很好的手段(CRC 並不是嚴格意義上的散列算法,但它的作用與散列算法大致相同,所以歸於此類)。