雜湊運算

雜湊運算

雜湊運算又稱hash函數,Hash函數(也稱雜湊函數或雜湊演演算法)就是把任意長的輸入消息串變化成固定長的輸出串的一種函數。

概念


又稱hash函數,Hash函數(也稱雜湊函數或雜湊演演算法)就是把任意長的輸入消息串變化成固定長的輸出串的一種函數。這個輸出串稱為該消息的雜湊值。就是一種可將一個 key 對應到一個索引的函數,一個可能的雜湊函數為 h(x)=key % 100 , (% 傳回 key 除以 100 的餘數 ) ,這個函數僅傳回 key 的末兩位數。若一個特定的 key ,被雜湊到 i ,就將這個 key 及其對應到的紀錄�放在 S[i] 。若一個特定的 key ,被雜湊到 i ,就將這個 key 及其對應到的紀錄�放在 S[i] 。
雜湊函數是信息安全中一個非常重要的工具,它對一個任意長度的消息m施加操作,返回一個固定長度的雜湊值h(m),雜湊函數是公開的,對處理過程不用保密...

現代密碼學中的應用


密碼雜湊函數(有時稱作消息摘要函數,雜湊函數又稱散列函數哈希函數)不一定使用到鑰匙,但和許多重要的密碼演演算法相關。它將輸入資料(通常是一整份文件)輸出成較短的固定長度雜湊值,這個過程是單向的,逆向操作難以完成,而且碰撞(兩個不同的輸入產生相同的雜湊值)發生的機率非常小。
信息認證碼或押碼(Message authentication codes, MACs)很類似密碼雜湊函數,除了接收方額外使用秘密鑰匙來認證雜湊值。
一般用於產生消息摘要,密鑰加密等.
一個安全的雜湊函數應該至少滿足以下幾個條件:
①輸入長度是任意的;
②輸出長度是固定的,根據目前的計算技術應至少取128bits長,以便抵抗生日攻擊;
③對每一個給定的輸入,計算輸出即雜湊值是很容易的
④給定雜湊函數的描述,找到兩個不同的輸入消息雜湊到同一個值是計算上不可行的,或給定雜湊函數的描述和一個隨機選擇的消息,找到另一個與該消息不同的消息使得它們雜湊到同一個值是計算上不可行的。
Hash函數主要用於完整性校驗和提高數字簽名的有效性,目前已有很多方案。這些演演算法都是偽隨機函數,任何雜湊值都是等可能的。輸出並不以可辨別的方式依賴於輸入;在任何輸入串中單個比特的變化,將會導致輸出比特串中大約一半的比特發生變化。
所謂雜湊衝撞指兩個完全不同的訊息經雜湊函數計算得出完全相同的雜湊值。根據鴿巢原理,以有長度限制的雜湊函數計算沒有長度限制的訊息是必然會有衝撞情況出現的。

目前常見的雜湊演演算法


演演算法名稱輸出大小 (bits)內部大小區塊大小長度大小字元尺寸碰撞情形HAVAL256/224/192/160/12825610246432是MD2128384128No8大多數MD41281285126432是MD51281285126432是PANAMA2568736256否32是RadioGatúnArbitrarily long58 words3 words否1-64否RIPEMD1281285126432是RIPEMD-128/256128/256128/2565126432否RIPEMD-160/320160/320160/3205126432否SHA-01601605126432是SHA-11601605126432With flawsSHA-256/224256/2242565126432否SHA-512/384512/384512102412864否Tiger(2)-192/160/128192/160/1281925126464否WHIRLPOOL5125125122568否