雜湊值產生器
計算文字或檔案的 MD5、SHA-1、SHA-256、SHA-384 與 SHA-512 雜湊值,並與公布的校驗碼比對。檔案不會被上傳。
在你的瀏覽器中執行
- MD5
- -
- SHA-1
- -
- SHA-256
- -
- SHA-384
- -
- SHA-512
- -
MD5 與 SHA-1 在安全用途上已被攻破,只適合用於檔案校驗。
驗證下載的檔案
這是大多數人需要雜湊值的原因。專案會公布釋出檔的 SHA-256,你計算手上這份檔案的雜湊值再比對, 兩者相同就代表你拿到的與公布的完全一致,一個位元組都不差。
請直接選擇上面的檔案,不要把內容貼成文字——檔案會在你的瀏覽器中讀取與計算,再大的安裝檔也不會 離開你的電腦。把公布的校驗碼貼進比對欄,它會告訴你是哪一種演算法相符。
在命令列上:
shasum -a 256 file.iso # macOS、Linux
certutil -hashfile file.iso SHA256 # Windows
該用哪一種演算法
| 演算法 | 輸出長度 | 現況 |
|---|---|---|
| MD5 | 128 位元,32 個十六進位字元 | 已被攻破,能輕易製造碰撞 |
| SHA-1 | 160 位元,40 個十六進位字元 | 已被攻破,2017 年公開了實際碰撞 |
| SHA-256 | 256 位元,64 個十六進位字元 | 目前的預設選擇 |
| SHA-384 | 384 位元,96 個十六進位字元 | SHA-512 的截斷版,部分 TLS 套件使用 |
| SHA-512 | 512 位元,128 個十六進位字元 | 在 64 位元硬體上常比 SHA-256 更快 |
這裡的「被攻破」指的是可以建構出碰撞:攻擊者能做出兩個雜湊值相同、內容不同的檔案。這不代表 雜湊值可以被反推回原文。MD5 用來偵測意外損毀——下載中斷、硬碟壞軌——仍然堪用,這也是有些鏡像站 至今仍附上 MD5 的原因。
雜湊不能拿來存密碼
直接用 SHA-256 對密碼取雜湊,計算速度快得驚人,而這正是最不該有的特性:一般顯示卡每秒可以試上 數十億組。密碼儲存需要刻意設計得緩慢、加鹽、佔記憶體的函式——argon2id、scrypt 或 bcrypt——並且每個使用者用不同的鹽。任何通用的雜湊工具,包括這一個,都不該出現在那條流程裡。
為什麼同樣的輸入永遠得到同樣的結果
雜湊是輸入的純函式,沒有隨機成分,也沒有金鑰,所以同樣的位元組在任何機器上、任何時候都會得到 同樣的值。這種確定性讓比對有意義,但也表示雜湊值本身無法證明檔案是「誰」做的。要證明來源需要 數位簽章,也就是把雜湊值和私鑰結合起來。
要注意結尾的換行會改變結果。echo hello | shasum 計算的是六個位元組,不是五個,這通常就是命令列
算出來的值和貼進網頁的文字對不起來的原因。
你的資料只留在這裡
雜湊值由瀏覽器的 WebCrypto 計算,MD5 則由一個需要時才載入的小模組提供。你輸入的文字與選擇的檔案 都不會上傳。