認識雜湊函式與摘要
這個產生器的用途
雜湊函式會把你輸入的任何文字壓縮成固定長度的十六進位字串,稱為摘要(digest)。這個工具同時執行 MD5、SHA-1、SHA-256、SHA-512 四種常見演算法,只要一修改文字,每個摘要就立即更新。輸出長度依演算法而不同:MD5 產生 32 個十六進位字元,SHA-1 產生 40 個,SHA-256 產生 64 個,SHA-512 產生 128 個。
雜湊在設計上是單向的。相同的輸入必定得到相同的摘要,但沒有任何運算能從摘要還原出原始文字。只要改動一個字元,整段輸出就會全部重寫,正是這個特性讓雜湊很適合用來察覺差異。
什麼時候用它
最常見的用途是確認檔案或訊息是否原封不動地送達。下載頁面常會一併公布某個版本的 SHA-256;把你收到的檔案算出雜湊,再比對兩段摘要,就能確認傳輸途中沒有損毀或被掉包。比對欄位可貼上作為基準的摘要,一眼就能看出是否相符。
開發時也會用它來產生去重用的快速指紋、測試系統如何儲存雜湊值,或觀察各演算法對同一輸入的行為差異。
範例:對短字串做雜湊
輸入 hello 這個字,SHA-256 每次都會回傳 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824,也就是 64 個十六進位字元。同一個字的 MD5 則短得多,是 5d41402abc4b2a76b9719d911017c592。只要多加一個空格,或把 H 改成大寫,兩段摘要都會徹底改變,和原本毫無相似之處。這種雪崩效應(avalanche effect)正是雜湊能成為可靠完整性檢查的原因。
注意事項與邊界情況
沒有一種演算法適用於所有情境。MD5 與 SHA-1 雖然快速,但在密碼學上已被攻破,且存在可實作的碰撞攻擊,因此只該用於總和檢查碼(checksum)與重複偵測,切勿用於資安。SHA-256 是目前數位簽章與區塊鏈的預設選擇,SHA-512 則為高安全性或長期保存提供更大的餘裕。
單靠雜湊也不適合用來儲存密碼。把密碼直接做一次 SHA-256,會被預先算好的表破解,因此實際系統會採用 bcrypt、scrypt、Argon2 這類刻意放慢的演算法,並搭配獨一無二的鹽值(salt)。請把這個產生器當成製作與核對摘要的工具,而不是密碼保管庫。