基礎與密碼學
密碼學雜湊
密碼學雜湊是一種函式:它接收任意資料——一個詞、一個檔案、乃至整座圖書館——把它壓縮成一串短而定長的字元,充當這份資料的數位指紋。相同的輸入永遠產生相同的指紋,可輸入哪怕只改一個字元,輸出也會被徹底打亂。可以把它想成一枚防拆的火漆封印:內容一旦被打開或改動,封印就對不上了。
有兩條性質讓它在安全上格外有用。其一是單向:僅憑指紋無法倒推回原始資料,所以這個函式正著算很容易,反著算卻幾乎不可能。其二是抗碰撞:要找到兩份不同的輸入、卻得出同一個指紋,是不可行的。這兩點合起來,意味著雜湊可以充當資料那份小巧而可信的摘要——兩個雜湊一致,資料就相同;不一致,則必有改動。
這正是把區塊鏈黏合在一起的膠水。每個區塊都由它的雜湊來概括,而每個新區塊都包含前一個區塊的雜湊,於是整段歷史被鎖進一個防竄改的順序裡。雜湊還讓網路只需比對幾串短字元、而非逐個位元組,就能比較龐大的資料集——這也是從密碼保存到檔案校驗,處處都能見到它的原因。
hash("Pay Alice 5") -> 9f86d081...4e3a
hash("Pay Alice 6") -> b1f3c0a7...d29c
(one digit changed -> a totally different fingerprint)輸入的微小改動會產生截然不同的雜湊——竄改正是這樣被發現的。
比特幣使用一種名為 SHA-256 的雜湊函式;這個名字指的是無論輸入多大,它總會產生 256 位元(約 64 個字元)的指紋。
又稱
另見