--- title: Hash Function tags: crypto lang: zh_tw --- * [筆記總覽](https://hackmd.io/@LJP/rkerFdnqS) [TOC] # Hash Function 中文翻作雜湊函數 簡單來說就是輸入任意長度字串進去一個演算法,輸出固定長度的字串 且無法從輸出的字串反推原本輸入了什麼 術語為 **one way** (只能從明文推得Hash, 無法從Hash反推明文) 且兩個明文就算相差很少,Hash 也要相差很多 因為輸入的長度可以遠大於輸出長度,簡單想想就知道,會有幾個輸入他們對應的輸出會重複,這稱作**Collision (碰撞)** 而 **Collision-free** 意涵為無法用算的算出兩個 hash 值一樣的 inputs,只能用暴力的每個 input 都算算看 hash 並看有無重複。而一個 Hash 演算法應該要有此性質 Hash 演算法例如 md5, sha256 ## Security Properties 1. Preimage resistance 給一個 $z$,無法找到 $x$ 符合 $hash(x) = z$ 簡單來說, $hash$ 是 one-way 的,給 output 無法反推 input 2. Second preimage resistance 給 $x_1$,無法找到 $x_2$ 符合 $hash(x_1) = hash(x_2)$ 更第一個性質相比,差在就算**已知明文**仍舊找不到另一個 input 跟已知明文的 hash 一樣 3. Collision resistance 簡單來說就是在有生之年是爆破不出來的