天天看點

Hash函數了解

哈希函數(Hash)

 又稱為 散列函數、雜湊演算法、雜湊函數等

 是一種單向密碼體制:從明文到密文的不可逆映射

 可将任意長度的輸入變換為固定長度的輸出

 生成消息的“資料指紋”(也稱消息摘要或散列值),

在資料完整性認證和數字簽名等領域有廣泛的應用

分類:

 改動檢測碼MDC(Manipulation Detection Code)

 不帶密鑰哈希函數,檢測消息有無篡改

 消息認證碼MAC(Message Authentication Code)

 帶密鑰哈希函數,認證消息源真實性與消息完整性

對任意長度的輸入消息,産生固定長度的輸出
公式表示:
h=H(M)
M:任意長度的消息
H:哈希函數
h:固定長度的哈希值
           

性質:

 輸入:任意有限長度消息;輸出:固定長度哈希值

 可計算性:對于任意給定消息,計算哈希值容易

 單向性:對給定哈希值h,要找到M使 H(M)=h 在計算

上不可行

 抗弱碰撞性:對于給定消息M1,找到M2 ≠M1 ,且滿足

H( M1 )=H(M2)在計算上是不可行的

 抗強碰撞性:找到任何滿足H(M1)=H(M2)的消息對(M1,

M2),在計算上是不可行的

一般模型:

Hash函數了解
核心:
 設計無碰撞的壓縮函數 f
 敵手對算法的攻擊重點是f 的内部結構
 f 和分組密碼一樣是由多輪處理組成
 攻擊者對各輪的位模式進行分析,找出 f 的碰撞
 f 是壓縮函數,其碰撞不可避免
 設計f 時,應保證找出碰撞在計算上是不可行的
兩個重要的疊代型哈希函數
 Hash算法衆多,MD5(128位)和SHA(160位)最著名
 MD5、SHA-1