ToolAct工具行動

哈希生成器

支援 MD5、SHA-1、SHA-256、SHA-384、SHA-512 多種哈希演算法

選擇哈希演算法
MD5
128
SHA-1
160
SHA-256
256
SHA-384
384
SHA-512
512

什麼是哈希?

哈希(Hash)是一種將任意長度的資料映射為固定長度摘要的演算法。相同的輸入始終產生相同的輸出,而微小的輸入變化會導致完全不同的輸出,且無法從哈希值反推原始資料。常見的哈希演算法包括 MD5、SHA-1、SHA-256、SHA-384、SHA-512 等,廣泛用於資料完整性校驗、密碼儲存、數位簽章等場景。 安全相關結果不能孤立判斷,還要結合金鑰、使用情境、演算法選擇和可信來源一起評估。

如何使用

如何使用

  1. 選擇輸入模式:文字輸入或檔案上傳
  2. 輸入文字內容或拖放檔案
  3. 勾選你要產生的雜湊演算法(可複選)
  4. 點選「Generate Hash」按鈕開始計算
  5. 點選「Copy」複製單一雜湊值,或「Copy All」複製全部結果

雜湊注意事項

  • 雜湊值是確定性的指紋;即使只更動輸入中一個位元組,也會產生完全不同的結果。
  • 涉及安全性時,請使用 SHA-256 或更強的演算法進行完整性檢查,並避免在新安全工作流程中使用 MD5/SHA-1。

使用場景

為文字或檔案產生多種演算法的雜湊值在文字和檔案輸入之間切換,選擇 MD5(128 位元)、SHA-1(160 位元)、SHA-256(256 位元)、SHA-384(384 位元)或 SHA-512(512 位元),只產生你需要的摘要。文字模式透過 JavaScript 實作以 UTF-8 雜湊輸入;檔案模式使用 Web Crypto 的 SubtleCrypto.digest 進行 SHA-2 結果的串流處理,輸入不會被上傳離開本機裝置。
將產生的雜湊值與剪貼簿內容進行比對對結果使用比對動作,檢查當前剪貼簿的值是否與該摘要匹配,這在驗證已複製的校驗碼或 API 範例時很方便。比對會標準化 Hex 大小寫,因此發佈者的大寫摘要和本機產生的小寫摘要仍能對齊——但演算法識別碼仍必須匹配(SHA-256 輸出為 64 個 Hex 字元,SHA-512 為 128 個)。
根據用途選擇合適的演算法MD5 或 SHA-1 僅適用於舊式相容和快速指紋識別(兩者都有已知的碰撞攻擊,不適用於數位簽章);當雜湊值的目的是偵測竄改時,請優先選擇 SHA-256 或更強的演算法。SHA-512 在 64 位元 CPU 上執行最快,這得益於其 64 位元的字組大小,是在伺服器級硬體上偏好它的一個實用理由。
對照已發佈的摘要驗證下載檔案的校驗碼切換到檔案模式,計算下載檔案的 SHA-256(或 SHA-512),然後將發佈者公布的校驗碼貼入比對欄位,在安裝或部署前確認位元組級的完整性。不完整的下載或中斷的傳輸會產生不同的摘要,這正是此工作流程要捕捉的那種不匹配。
跨越編碼邊界重現相同的摘要切換 UTF-8 與原始位元組後對同一字串重新雜湊,了解為什麼相同的邏輯文字在來源編碼、BOM 或換行符號不同時會產生不同的 MD5 或 SHA-1 值。字串開頭的 UTF-8 BOM(0xEF 0xBB 0xBF)會改變摘要,即使可見字元完全相同——這能在它導致校驗碼不匹配之前就捕捉到問題。

技術原理

密碼學雜湊函式將任意長度的輸入映射為固定長度的摘要,具有三項安全特性:原像抗性(難以反推)、第二原像抗性(難以找到具有相同摘要的不同輸入)和碰撞抗性(難以找到任意兩個具有相同摘要的輸入)。MD5(Rivest 1991,RFC 1321)、SHA-1(NIST FIPS 180-1,1995)和 SHA-2 家族(FIPS 180-4,2012)都是 Merkle-Damgård 結構:輸入被填充到區塊大小的倍數,然後透過單向壓縮函式迭代。區塊大小:MD5、SHA-1、SHA-256 為 512 位元,SHA-512 為 1024 位元。摘要大小分別為 128 / 160 / 256 / 384 / 512 位元。 MD5(Rivest 1991)是 128 位元雜湊,64 輪四分之一輪操作,使用四個 32 位元鏈結字(A、B、C、D),常數源自正弦函式(無安全意義,僅為打破對稱性)。碰撞攻擊:Wang 等人 2004 年將 MD5 碰撞搜尋降至 2⁴⁰ 次雜湊評估(手算差分路徑);Stevens 2009 年編寫了選擇前綴碰撞工具;Flame 惡意軟體 2012 年使用新穎的選擇前綴攻擊偽造了 Microsoft 程式碼簽章證書,標誌著首個已知的實際 MD5 碰撞利用。如今,MD5 碰撞在 CPU 上花費不到一美元,在 GPU 上僅需毫秒級時間。任何新協議請使用 SHA-256。 SHA-1(FIPS 180-1,NIST 於 2011 年在 FIPS 180-4 之後棄用)是 160 位元雜湊,80 輪操作,使用五個 32 位元鏈結字。SHAttered 攻擊(Stevens 等人,2017 年 2 月)產生了首個實用的 SHA-1 碰撞,花費約 6,500 CPU 年和 110 GPU 年。到 2020 年,選擇前綴碰撞以約 45,000 美元的 GPU 時間即可實現,到 2025 年商品硬體上的碰撞成本遠低於 10,000 美元。Git 於 2020 年從 SHA-1 遷移到 SHA-256;HTTPS 證書自 2017 年起不允許使用 SHA-1。選擇前綴碰撞的 SHAttered 輸出('SHAttered.pdf' 和 'SHAttered2.pdf')是標準測試向量:它們的 SHA-1 摘要相同但內容不同。 SHA-2(FIPS 180-4,2012)涵蓋六種雜湊:SHA-1 的後繼者 SHA-224、SHA-256、SHA-384、SHA-512 加上兩個截斷變體 SHA-512/256 和 SHA-512/224。SHA-256 內部使用六個邏輯函式(Ch、Maj、Σ0、Σ1、σ0、σ1)和 64 個輪常數 K[t] = ⌊∛(第 t 個質數小數部分的前 32 位元)⌋——質數立方根結構純粹是美學考量,無安全作用。SHA-256 自 2010 年左右起一直是主力,是 TLS 1.3(RFC 8446)、Bitcoin 工作量證明(直到 2025 年的轉型討論)和大多數定址儲存的事實標準。SHA-512/256 在 64 位元硬體上更快,因為它使用 64 位元字組並執行 SHA-512 的壓縮後截斷。 SHA-3(FIPS 202,2014)和 Keccak(原始提交)使用根本不同的結構:Keccak-f[1600] 海綿結構,具有 1600 位元狀態,交替吸收/擠壓階段。SHA-3 具有與 SHA-2 相同的摘要大小,但能抵抗影響 Merkle-Damgård 雜湊的長度擴展攻擊——在雜湊秘密前綴 MAC 時非常有用。BLAKE2(RFC 7693)在軟體中比 SHA-256 更快,WireGuard、Argon2 和多個現代協議都在使用。 本頁面透過 SubtleCrypto.digest 在瀏覽器中執行 SHA-1、SHA-256、SHA-384 和 SHA-512(呼叫平台原生程式碼——Chromium 上為 OpenSSL/BoringSSL,Firefox 上為 NSS,Safari 上為等效實作),並回退到純 JS 的 MD5 實作,因為 SubtleCrypto 不暴露 MD5(依 W3C Web Crypto API,MD5 處於 'recommend-only' 狀態)。對於 10 MB 的檔案,V8 中的 SHA-256 在現代筆電上執行速度約 400 MB/s,而純 JS 的 MD5 約 100-150 MB/s——Web Crypto SHA 家族比任何純 JS 實作快 3-4 倍,這就是頁面將 SHA-1 以上路由到原生介面的原因。

  • MD5(Rivest 1991,RFC 1321):128 位元摘要、512 位元區塊、64 輪、Merkle-Damgård。自 Wang 2004(2⁴⁰ 工作量)起碰撞已被破解,Flame 2012 的選擇前綴也被破解——永遠不要用於新程式碼,但用於非安全用途的校驗碼、ETag、內容指紋或快取鍵仍然可以。
  • SHA-1(FIPS 180-1,1995;FIPS 180-4 於 2011 年棄用):160 位元摘要。SHAttered 碰撞(Stevens 等人,2017 年 2 月)花費約 6,500 CPU 年;選擇前綴碰撞現在低於 10,000 美元。Git 於 2020 年遷移到 SHA-256;CA/Browser Forum 於 2017 年禁止在 HTTPS 證書中使用 SHA-1。
  • SHA-256(FIPS 180-4):256 位元摘要、64 輪 Ch/Maj/Σ0/Σ1/σ0/σ1、64 個輪常數 K[t] 源自 ∛(質數) 小數部分。TLS 1.3(RFC 8446)、大多數定址儲存和 Bitcoin 挖礦的主力。256 位元安全等級提供約 128 位元碰撞抗性。
  • SHA-384/SHA-512(FIPS 180-4):SHA-512 使用 64 位元字組、80 輪、1024 位元區塊。在 64 位元硬體上大約比 SHA-256 快 1.5-2 倍。SHA-384 是 SHA-512 截斷至 384 位元;SHA-512/256 是 SHA-512 截斷至 256 位元,比 SHA-256 提供更好的長度擴展抗性。
  • SHA-3(FIPS 202,2014)/ Keccak:使用 Keccak-f[1600] 置換的海綿結構,SHA3-256/384/512 的速率分別為 1088/832/576 位元。能抵抗影響 Merkle-Damgård 雜湊的長度擴展攻擊——適用於秘密前綴 MAC。
  • BLAKE2(RFC 7693)和 BLAKE3 是現代快速雜湊;BLAKE2s 是典型的 MAC 金鑰派生,BLAKE2b 被 WireGuard 和許多協議使用,BLAKE3 增加了 Merkle 樹以支援平行雜湊。截至 2025 年未納入 Web Crypto,因此本頁面不暴露它們。
  • Web Crypto API(W3C):SubtleCrypto.digest('SHA-256', data) 回傳 Promise<ArrayBuffer>,由平台原生程式碼計算。V8 上 SHA-256 約 400 MB/s,純 JS MD5 約 100-150 MB/s——3-4 倍的差距就是頁面將 SHA-1 以上路由到 SubtleCrypto 的原因。
  • 長度擴展注意事項:H(secret || message) 對任何 Merkle-Damgård 雜湊(MD5、SHA-1、SHA-2)都是可偽造的,只要攻擊者知道摘要和訊息長度。HMAC(RFC 2104)和 SHA-3 可避免此問題。MAC 請使用 HMAC-SHA-256 或 KMAC;對不可信輸入的雜湊,原始摘要即可。

範例

FIPS 180-2 測試向量:空字串與 'abc'

輸入:  '' (empty, 0 bytes)
MD5:     d41d8cd98f00b204e9800998ecf8427e   (32 hex chars)
SHA-1:   da39a3ee5e6b4b0d3255bfef95601890afd80709   (40 hex chars)
SHA-256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855   (64 hex chars)
SHA-512: cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

輸入:  'abc' (3 bytes, the canonical FIPS test vector)
MD5:     900150983cd24fb0d6963f7d28e17f72
SHA-1:   a9993e364706816aba3e25717850c26c9cd0d89d
SHA-256: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA-512: ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f

每種輸出長度由演算法固定(MD5 128 位元、SHA-1 160 位元、
SHA-256 256 位元、SHA-512 512 位元),與輸入長度無關。

FIPS 180-2 56 位元組測試向量(多區塊)

輸入:  'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq' (56 bytes)

SHA-256: 248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1
SHA-512: 8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018
         50d1c9ef3504cabb287a00833cf81a7e (128 hex chars - 僅顯示前 64 字元,
         完整摘要為 64 位元組 / 1024 位元)

這個 56 位元組向量橫跨兩個 512 位元 SHA-256 區塊,可驗證
訊息排程(單字 16..63 的 sigma_0 / sigma_1 展開)。
它是 NIST CAVP 對 SHA-256 的參考輸入,也是確認訊息排程
迴圈是否正確實作的標準方式。若結果相符,代表區塊填充、
長度附加與最終狀態加總皆正常運作。SHA-512 採相同的
Merkle-Damgard 結構,但使用 64 位元字長與 80 步排程,
因此同樣的 56 位元組輸入會產生 128 位 hex 字元的摘要。

雪崩效應與編碼陷阱

輸入:  '' (empty)        MD5: d41d8cd98f00b204e9800998ecf8427e
輸入:  'a' (one byte)     MD5: 0cc175b9c0f1b6a831c399e269772661

新增單一位元組會改變每一位元的輸出 — 這就是雪崩特性。
大小寫亦同(a -> A 將 0x61 變為 0x41,第 0x20 位有一位元差異),
尾端空白也是。請注意,可見文字不論是否帶有結尾的 '\n' 或
UTF-8 BOM (0xEF 0xBB 0xBF),產生的摘要皆不同,因此要比對
已公布的校驗碼,必須完全比對位元組序列,而非可見字元。
瀏覽器與 Node 會先將字串透過 TextEncoder 處理,使輸入位元組
具確定性;若 JS 版 MD5 直接吃字串,對非 ASCII 輸入會產生錯誤雜湊。

使用 sha256sum 驗證檔案完整性

$ sha256sum ubuntu-24.04-desktop-amd64.iso
4d0c238817f7d74c93cfbe7939f8f7a4f9a0d0c7c0e8a6c4f9a0d0c7c0e8a6c4 *ubuntu-24.04-desktop-amd64.iso

1. 將相同的 .iso 拖入此頁面的檔案模式並選擇 SHA-256。
2. 將 64 字元的摘要複製到比對欄位。
3. 若摘要相符,代表下載的檔案與發行方位元組完全相同。
   不相符則表示檔案損毀、未下載完整,或版本與資訊清單中的不同。

同一檔案的 MD5 與 SHA-1 摘要分別為 32 與 40 字元;
SHA-256 與 SHA-512 為 64 與 128 字元。比對前請確認發行方
所使用的演算法相同。

常見問題

這個工具支援哪些演算法?

通常是 MD5、SHA-1、SHA-256、SHA-384、SHA-512,有時還包含 SHA-3 / RIPEMD-160。SHA-256 是目前的標準選擇;MD5 與 SHA-1 只應用於非安全用途的校驗。

雜湊跟加密一樣嗎?

不一樣。雜湊是單向的——拿到雜湊值無法以演算法回推原始輸入(除非對小範圍輸入暴力破解)。加密則可用金鑰可逆。指紋與完整性檢查使用雜湊,機密性則使用加密。

輸入是在哪裡進行雜湊的?

所有雜湊計算都在你的瀏覽器中透過 Web Crypto API 或純 JS 實作完成,不會送到伺服器。你可以在貼上輸入時打開「網路」分頁確認。

為什麼相同輸入在另一個網站得到不同的雜湊?

差異通常來自輸入的前處理:換行字元(CRLF 與 LF)、結尾空白、字元編碼(UTF-8 與 UTF-16),或某些工具自動補上的換行。雜湊演算法本身在所有實作中都是確定性的。

可以反推雜湊嗎?

從數學上不行。實務上,來源範圍小的短輸入(常見密碼、字典詞、短數字)可以在預先計算的彩虹表中查到。對任何敏感資料來說,這正是要使用加鹽和如 bcrypt、Argon2 等慢雜湊的原因——本工具無法取代它們。

可以用這個工具雜湊密碼嗎?

不行。單純使用 SHA-256 對密碼儲存來說太快了。請改用 bcrypt、scrypt 或 Argon2,搭配每位使用者獨立的鹽和經過調校的工作量參數。SHA 系列雜湊適合用在檔案完整性、內容定址、簽章輸入等場合,不是密碼。

為什麼不同雜湊長度不一樣?

每種演算法有固定的摘要長度:MD5 為 128 位元(32 個十六進位字元)、SHA-1 為 160 位元(40 個字元)、SHA-256 為 256 位元(64 個字元)、SHA-512 為 512 位元(128 個字元)。越長越能抵抗碰撞,但雜湊本身佔用的儲存空間也較大。