概念
又稱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) | 內部大小 | 區塊大小 | 長度大小 | 字元尺寸 | 碰撞情形 |
HAVAL | 256/224/192/160/128 | 256 | 1024 | 64 | 32 | 是 |
MD2 | 128 | 384 | 128 | No | 8 | 大多數 |
MD4 | 128 | 128 | 512 | 64 | 32 | 是 |
MD5 | 128 | 128 | 512 | 64 | 32 | 是 |
PANAMA | 256 | 8736 | 256 | 否 | 32 | 是 |
RadioGatún | Arbitrarily long | 58 words | 3 words | 否 | 1-64 | 否 |
RIPEMD | 128 | 128 | 512 | 64 | 32 | 是 |
RIPEMD-128/256 | 128/256 | 128/256 | 512 | 64 | 32 | 否 |
RIPEMD-160/320 | 160/320 | 160/320 | 512 | 64 | 32 | 否 |
SHA-0 | 160 | 160 | 512 | 64 | 32 | 是 |
SHA-1 | 160 | 160 | 512 | 64 | 32 | With flaws |
SHA-256/224 | 256/224 | 256 | 512 | 64 | 32 | 否 |
SHA-512/384 | 512/384 | 512 | 1024 | 128 | 64 | 否 |
Tiger(2)-192/160/128 | 192/160/128 | 192 | 512 | 64 | 64 | 否 |
WHIRLPOOL | 512 | 512 | 512 | 256 | 8 | 否 |