
雜湊函數是把不同長度的輸入資料,轉成指定長度輸出的運算方法。密碼學用途還要求單向性與抗碰撞等安全特性;輸出常稱為雜湊值或摘要,不能只因為看起來像亂碼就當作加密。
它可協助比對檔案與連接區塊資料,但不會自動判斷內容是否真實。以下從輸入與輸出開始,再理解區塊鏈中的用途及不能保證的事。
雜湊函數的輸入與輸出是什麼?
同一雜湊函數,對相同位元組產生相同輸出
美國 NIST 的密碼學雜湊函數定義,說明可變長度位元字串映射至固定長度位元字串。固定長度是針對指定演算法,不代表所有演算法輸出都一樣長。
以 SHA-256 為例,輸出是 256 位元,常用 64 個十六進位字元表示。輸入一個短字,或一份長檔案,輸出長度仍相同;這不表示摘要保存了能還原原文的全部內容。
hello 與 Hello,會送入不同資料
把 hello 與 Hello 分別以 UTF-8 編碼、且不加入換行,再用同一 SHA-256 雜湊函數計算,兩者摘要分別以 2cf24dba 與 185f8db3 開頭。大小寫不同,輸入位元組便不同。
這兩個例子顯示輸入差異如何反映在摘要,但不能用兩個結果就證明任何不同輸入都不會碰撞。實際比對應使用完整摘要,還要確認字元編碼、換行與檔案內容一致。

雜湊函數的單向與抗碰撞,為何不是絕對保證?
單向性是計算上難以找到對應輸入
密碼學雜湊函數的單向性,指給定摘要後,要找到對應輸入在計算上不可行的安全目標。它不是數學上宣告永遠沒有人能猜中原文。
如果可能的原文只有少數幾種,就可能逐一猜測並比對。因此,不能把助記詞、私鑰或敏感資料丟進陌生網站,以為先做普通雜湊就安全。示範只使用公開、無敏感性的字串。
抗碰撞不等於碰撞不存在
碰撞是兩個不同輸入得到相同輸出。抗碰撞要求難以找到這樣的組合,不能將它改寫成雜湊函數絕對不可能碰撞。
同樣地,不是每個名稱帶有 Hash 的方法都適合安全用途。比較摘要時,須先確認演算法及可信來源,不能只看字串長度便認定可靠。

區塊鏈如何使用雜湊函數?
交易識別與 Merkle 結構
Bitcoin 開發文件說明,交易序列化資料經雜湊可形成交易識別碼,Merkle 結構再將交易識別摘要逐層配對並雜湊,建立資料之間的關聯。
這能協助檢查某筆資料是否被包含在一組資料內,卻沒有證明該筆交易對應的現實敘述都是真的。其他鏈的識別碼算法也可能不同,不能一律套用 Bitcoin 細節。
前區塊摘要與共識一起形成限制
Bitcoin 區塊標頭保存前一個區塊標頭的雜湊,讓區塊之間建立連結。它並不是在每個新區塊裡,再放入整條鏈的所有原文。
若改動較早資料,後續鏈結及工作量證明等條件都要面對驗證。區塊鏈的抗竄改因此不能只歸功於雜湊函數,還包括共識規則與節點驗證。
雜湊函數能證明什麼,不能證明什麼?
資料一致性,需要可信的比較基準
下載檔案後,用相同演算法計算摘要,再與可信發布者提供的完整摘要比較,可以檢查資料是否一致。但若檔案和基準摘要都來自同一個不可信頁面,兩者相同仍無法單靠這次比對證明安全。
雜湊函數本身不會辨認發布者是否冒名,也不會判斷檔案有沒有惡意功能。比對前先確認來源,與比對結果一樣重要。
真實性、作者與授權,須分開判斷
雜湊不是提供解密金鑰讓收件人還原明文的加密程序,也不能單獨證明誰簽署或授權。數位簽章、加密與雜湊函數各有用途,不能互相當作同一功能。
若有人把一段不實文字的摘要寫上鏈,鏈上記錄能關聯的是已輸入資料,不能讓那段現實敘述變成事實。理解這個邊界,才能避免將「已上鏈」當成真假保證。

理解摘要用途後,可接著看區塊鏈如何連接資料;實際查交易時,再依區塊鏈瀏覽器的查詢方式辨識欄位。
小結:摘要幫你比對,不替你判斷真偽
理解雜湊函數,先確認演算法和輸入,再看完整摘要與可信基準。它在區塊鏈中建立資料關聯,但單向、抗碰撞與上鏈紀錄,都有各自的條件,不能延伸成內容真實或資產安全保證。
本文為入門教學,非投資、法律或稅務建議;法規與市場變動快,請以官方最新公告為準。



