核心概念

雜湊(hash)

/ HASH /

雜湊(hash)是從任意一份資料算出來的一個簡短、固定長度的「指紋」。無論餵進去的是一個單字還是一整部電影,雜湊函式都吐出一串等長的字元——一個整整齊齊的小簽名,用來代表那整份東西。同樣的輸入永遠得出同樣的雜湊,哪怕只改動一個字母,結果也會面目全非。

有兩個特性讓它特別有用。第一,它是「單向」的:從資料算到雜湊一瞬間就好,但你沒法把它倒推回去還原出原文——指紋裡並不包含那個人本身。第二,它是個可靠的摘要:如果兩個檔案的雜湊相同,它們幾乎肯定一模一樣,所以你只要比對指紋、而不必逐位元組核對,就能確認下載沒出錯。

同樣的把戲也撐起了「快速尋找」。雜湊表(hash map)會把像「email」這樣的鍵直接算成一個數字,告訴你該去哪個格子裡找——不用一行行掃清單,算出雜湊直接去取就行。這正是為什麼哪怕在一個巨大的集合裡,按鍵查東西也快得像瞬間完成。

$ echo -n "hello" | sha256sum
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
$ echo -n "hellp" | sha256sum   # one letter off — totally different
f3c8cf2...

每次長度都一樣;改動一個字母,整個指紋就全變了。

git 裡像 9f2a1c3 這樣的提交編號就是一個雜湊——它是那個快照裡全部內容的固定長度指紋。

又稱
hashinghash functionchecksumdigestsha256md5